Bug: passing a dict of object to the factory is ignored
Closed this issue · 1 comments
lindycoder commented
Hello!
When setting a .build()
override for a dict where the value is a Pydantic model, it seems to be ignored.
pydantic-factories version 1.6.2
Following code repoduces: note that i made a simple dict to show that it doesn't work with classes only
from pydantic import BaseModel
from pydantic_factories import ModelFactory, Use
class MyMappedClass(BaseModel):
val: str
class MyClass(BaseModel):
my_mapping_obj: dict[str, MyMappedClass]
my_mapping_str: dict[str, str]
class MyClassFactory(ModelFactory[MyClass]):
__model__ = MyClass
obj = MyClassFactory.build(
my_mapping_obj={"foo": MyMappedClass(val="bar")},
my_mapping_str={"foo": "bar"},
)
print(obj.json(indent=2))
Output is
{
"my_mapping_obj": {
"xNLsYhvhemQDptZfpDWz": {
"val": "DzMmWPdDALDUROEsduqT"
}
},
"my_mapping_str": {
"foo": "bar"
}
}
expected output is
{
"my_mapping_obj": {
"foo": { <---
"val": "bar" <---
}
},
"my_mapping_str": {
"foo": "bar"
}
}
Thank you!
Goldziher commented
thanks. A PR with a fix would be welcome.