File tree Expand file tree Collapse file tree
src/datamodel_code_generator/model/pydantic
tests/data/expected/main/jsonschema Expand file tree Collapse file tree Original file line number Diff line number Diff line change @@ -220,7 +220,7 @@ def __str__(self) -> str: # noqa: PLR0912
220220 elif isinstance (discriminator , dict ): # pragma: no cover
221221 data ["discriminator" ] = discriminator ["propertyName" ]
222222
223- if self .required :
223+ if self .required and not self . has_default :
224224 default_factory = None
225225 elif self .default is not UNDEFINED and self .default is not None and "default_factory" not in data :
226226 default_factory = self ._get_default_as_pydantic_model ()
@@ -249,7 +249,7 @@ def __str__(self) -> str: # noqa: PLR0912
249249
250250 if self .use_annotated :
251251 field_arguments = self ._process_annotated_field_arguments (field_arguments )
252- elif self .required :
252+ elif self .required and not default_factory :
253253 field_arguments = ["..." , * field_arguments ]
254254 elif not default_factory :
255255 default_repr = repr_set_sorted (self .default ) if isinstance (self .default , set ) else repr (self .default )
Original file line number Diff line number Diff line change @@ -25,11 +25,17 @@ class Pet(BaseModel):
2525
2626
2727class Family (BaseModel ):
28- __root__ : list [ID ] = ['abc' , 'efg' ]
28+ __root__ : list [ID ] = Field (
29+ default_factory = lambda : [ID .parse_obj (v ) for v in ['abc' , 'efg' ]]
30+ )
2931
3032
3133class FamilyPets (BaseModel ):
32- __root__ : list [Pet ] = ['taro' , 'shiro' ]
34+ __root__ : list [Pet ] = Field (
35+ default_factory = lambda : [
36+ Pet .parse_obj (v ) for v in [{'name' : 'taro' }, {'name' : 'shiro' }]
37+ ]
38+ )
3339
3440
3541class Person (BaseModel ):
You can’t perform that action at this time.
0 commit comments