Skip to content

Commit dff1941

Browse files
committed
Fix empty list default for GraphQL list fields
1 parent 4fa0727 commit dff1941

2 files changed

Lines changed: 16 additions & 2 deletions

File tree

src/datamodel_code_generator/model/pydantic/base_model.py

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -126,9 +126,23 @@ def _get_strict_field_constraint_value(self, constraint: str, value: Any) -> Any
126126
return value
127127
return int(value)
128128

129-
def _get_default_as_pydantic_model(self) -> str | None:
129+
def _get_default_as_pydantic_model(self) -> str | None: # noqa: PLR0911, PLR0912
130130
if isinstance(self.default, WrappedDefault):
131131
return f"lambda :{self.default!r}"
132+
# Handle the case where self.data_type.is_list is True directly (e.g., GraphQL)
133+
if self.data_type.is_list and len(self.data_type.data_types) == 1:
134+
data_type_child = self.data_type.data_types[0]
135+
if (
136+
data_type_child.reference
137+
and isinstance(data_type_child.reference.source, BaseModelBase)
138+
and isinstance(self.default, list)
139+
):
140+
if not self.default:
141+
return STANDARD_LIST
142+
return ( # pragma: no cover
143+
f"lambda :[{data_type_child.alias or data_type_child.reference.source.class_name}."
144+
f"{self._PARSE_METHOD}(v) for v in {self.default!r}]"
145+
)
132146
for data_type in self.data_type.data_types or (self.data_type,):
133147
# TODO: Check nested data_types
134148
if data_type.is_dict:

tests/main/graphql/test_main_graphql.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
EXPECTED_GRAPHQL_PATH,
1313
GRAPHQL_DATA_PATH,
1414
LEGACY_BLACK_SKIP,
15-
run_main_and_assert
15+
run_main_and_assert,
1616
)
1717
from tests.main.graphql.conftest import assert_file_content
1818

0 commit comments

Comments
 (0)