We are currently solving the following issue within our repository. Here is the issue text:
--- BEGIN ISSUE ---
from_pydantic() converts False values to None
When calling `from_pydantic()`, values consistent with `bool(value) == False` may be replaced with None. 

This recreates the issue:
```
from pydantic import BaseModel
import strawberry

class PydanticClass(BaseModel):
    str1: str
    str2: str
    bool1: bool
    bool2: bool

@strawberry.experimental.pydantic.type(
    model=PydanticClass,
    fields=['str1', 'str2', 'bool1', 'bool2']
)
class StrawberryClass:
    pass

str1 = 'nonempty'
str2 = ''
bool1 = True
bool2 = False

myobj = PydanticClass(
    str1=str1,
    str2=str2,
    bool1=bool1,
    bool2=bool2
)
print('pydantic obj:', myobj)

converted = StrawberryClass.from_pydantic(myobj)
print('converted:', converted)
```

The output:
```
pydantic obj: str1='nonempty' str2='' bool1=True bool2=False
converted obj: StrawberryClass(str1='nonempty', str2=None, bool1=True, bool2=None)
```
Both str2 and bool2 were converted to None.

Location of the bug: https://github.com/strawberry-graphql/strawberry/blob/main/strawberry/experimental/pydantic/conversion.py#L10



--- END ISSUE ---

Below are some code segments, each from a relevant file. One or more of these files may contain bugs.
--- BEGIN FILES ---
Path: `strawberry/experimental/pydantic/conversion.py`
Content:
```
1 from typing import cast
2 
3 from strawberry.field import StrawberryField
4 from strawberry.scalars import is_scalar
5 
6 
7 def _convert_from_pydantic_to_strawberry_field(
8     field: StrawberryField, data_from_model=None, extra=None
9 ):
10     data = data_from_model or extra
11 
12     if field.is_list:
13         assert field.child is not None
14 
15         items = [None for _ in data]
16 
17         for index, item in enumerate(data):
18             items[index] = _convert_from_pydantic_to_strawberry_field(
19                 field.child,
20                 data_from_model=item,
21                 extra=extra[index] if extra else None,
22             )
23 
24         return items
25     elif is_scalar(field.type):  # type: ignore
26         return data
27     else:
28         return convert_pydantic_model_to_strawberry_class(
29             field.type, model_instance=data_from_model, extra=extra
30         )
31 
32 
33 def convert_pydantic_model_to_strawberry_class(cls, *, model_instance=None, extra=None):
34     extra = extra or {}
35     kwargs = {}
36 
37     for field in cls._type_definition.fields:
38         field = cast(StrawberryField, field)
39         python_name = field.python_name
40 
41         data_from_extra = extra.get(python_name, None)
42         data_from_model = (
43             getattr(model_instance, python_name, None) if model_instance else None
44         )
45         kwargs[python_name] = _convert_from_pydantic_to_strawberry_field(
46             field, data_from_model, extra=data_from_extra
47         )
48 
49     return cls(**kwargs)
50
```
--- END FILES ---

Please first localize the bug based on the issue statement, and then generate a patch according to the `git diff` format fenced by three backticks.

Here is an example:

```diff
diff --git a/examples/server_async.py b/examples/server_async.py
--- a/examples/server_async.py
+++ b/examples/server_async.py
@@ -313,4 +313,4 @@
 
 
 if __name__ == "__main__":
-    asyncio.run(run_async_server("."), debug=True)
+    asyncio.run(run_async_server(), debug=True)
diff --git a/examples/server_sync.py b/examples/server_sync.py
--- a/examples/server_sync.py
+++ b/examples/server_sync.py
@@ -313,5 +313,5 @@
 
 
 if __name__ == "__main__":
-    server = run_sync_server(".")
+    server = run_sync_server()
     server.shutdown()

```

diff --git a/strawberry/experimental/pydantic/conversion.py b/strawberry/experimental/pydantic/conversion.py
--- a/strawberry/experimental/pydantic/conversion.py
+++ b/strawberry/experimental/pydantic/conversion.py
@@ -7,7 +7,7 @@
 def _convert_from_pydantic_to_strawberry_field(
     field: StrawberryField, data_from_model=None, extra=None
 ):
-    data = data_from_model or extra
+    data = data_from_model if data_from_model is not None else extra
 
     if field.is_list:
         assert field.child is not None

{"golden_diff": "diff --git a/strawberry/experimental/pydantic/conversion.py b/strawberry/experimental/pydantic/conversion.py\n--- a/strawberry/experimental/pydantic/conversion.py\n+++ b/strawberry/experimental/pydantic/conversion.py\n@@ -7,7 +7,7 @@\n def _convert_from_pydantic_to_strawberry_field(\n     field: StrawberryField, data_from_model=None, extra=None\n ):\n-    data = data_from_model or extra\n+    data = data_from_model if data_from_model is not None else extra\n \n     if field.is_list:\n         assert field.child is not None\n", "issue": "from_pydantic() converts False values to None\nWhen calling `from_pydantic()`, values consistent with `bool(value) == False` may be replaced with None. \r\n\r\nThis recreates the issue:\r\n```\r\nfrom pydantic import BaseModel\r\nimport strawberry\r\n\r\nclass PydanticClass(BaseModel):\r\n    str1: str\r\n    str2: str\r\n    bool1: bool\r\n    bool2: bool\r\n\r\n@strawberry.experimental.pydantic.type(\r\n    model=PydanticClass,\r\n    fields=['str1', 'str2', 'bool1', 'bool2']\r\n)\r\nclass StrawberryClass:\r\n    pass\r\n\r\nstr1 = 'nonempty'\r\nstr2 = ''\r\nbool1 = True\r\nbool2 = False\r\n\r\nmyobj = PydanticClass(\r\n    str1=str1,\r\n    str2=str2,\r\n    bool1=bool1,\r\n    bool2=bool2\r\n)\r\nprint('pydantic obj:', myobj)\r\n\r\nconverted = StrawberryClass.from_pydantic(myobj)\r\nprint('converted:', converted)\r\n```\r\n\r\nThe output:\r\n```\r\npydantic obj: str1='nonempty' str2='' bool1=True bool2=False\r\nconverted obj: StrawberryClass(str1='nonempty', str2=None, bool1=True, bool2=None)\r\n```\r\nBoth str2 and bool2 were converted to None.\r\n\r\nLocation of the bug: https://github.com/strawberry-graphql/strawberry/blob/main/strawberry/experimental/pydantic/conversion.py#L10\r\n\r\n\n", "before_files": [{"content": "from typing import cast\n\nfrom strawberry.field import StrawberryField\nfrom strawberry.scalars import is_scalar\n\n\ndef _convert_from_pydantic_to_strawberry_field(\n    field: StrawberryField, data_from_model=None, extra=None\n):\n    data = data_from_model or extra\n\n    if field.is_list:\n        assert field.child is not None\n\n        items = [None for _ in data]\n\n        for index, item in enumerate(data):\n            items[index] = _convert_from_pydantic_to_strawberry_field(\n                field.child,\n                data_from_model=item,\n                extra=extra[index] if extra else None,\n            )\n\n        return items\n    elif is_scalar(field.type):  # type: ignore\n        return data\n    else:\n        return convert_pydantic_model_to_strawberry_class(\n            field.type, model_instance=data_from_model, extra=extra\n        )\n\n\ndef convert_pydantic_model_to_strawberry_class(cls, *, model_instance=None, extra=None):\n    extra = extra or {}\n    kwargs = {}\n\n    for field in cls._type_definition.fields:\n        field = cast(StrawberryField, field)\n        python_name = field.python_name\n\n        data_from_extra = extra.get(python_name, None)\n        data_from_model = (\n            getattr(model_instance, python_name, None) if model_instance else None\n        )\n        kwargs[python_name] = _convert_from_pydantic_to_strawberry_field(\n            field, data_from_model, extra=data_from_extra\n        )\n\n    return cls(**kwargs)\n", "path": "strawberry/experimental/pydantic/conversion.py"}], "after_files": [{"content": "from typing import cast\n\nfrom strawberry.field import StrawberryField\nfrom strawberry.scalars import is_scalar\n\n\ndef _convert_from_pydantic_to_strawberry_field(\n    field: StrawberryField, data_from_model=None, extra=None\n):\n    data = data_from_model if data_from_model is not None else extra\n\n    if field.is_list:\n        assert field.child is not None\n\n        items = [None for _ in data]\n\n        for index, item in enumerate(data):\n            items[index] = _convert_from_pydantic_to_strawberry_field(\n                field.child,\n                data_from_model=item,\n                extra=extra[index] if extra else None,\n            )\n\n        return items\n    elif is_scalar(field.type):  # type: ignore\n        return data\n    else:\n        return convert_pydantic_model_to_strawberry_class(\n            field.type, model_instance=data_from_model, extra=extra\n        )\n\n\ndef convert_pydantic_model_to_strawberry_class(cls, *, model_instance=None, extra=None):\n    extra = extra or {}\n    kwargs = {}\n\n    for field in cls._type_definition.fields:\n        field = cast(StrawberryField, field)\n        python_name = field.python_name\n\n        data_from_extra = extra.get(python_name, None)\n        data_from_model = (\n            getattr(model_instance, python_name, None) if model_instance else None\n        )\n        kwargs[python_name] = _convert_from_pydantic_to_strawberry_field(\n            field, data_from_model, extra=data_from_extra\n        )\n\n    return cls(**kwargs)\n", "path": "strawberry/experimental/pydantic/conversion.py"}]}