Skip to content

Commit 0fdc9f3

Browse files
committed
fix: Fixed the method of determining whether pydantic v2 field is allowed to be None
1 parent c8cc4ae commit 0fdc9f3

1 file changed

Lines changed: 12 additions & 4 deletions

File tree

fastapi_amis_admin/utils/pydantic.py

Lines changed: 12 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -66,10 +66,18 @@ def field_outer_type(field: ModelField) -> Any:
6666
return field.field_info.annotation
6767

6868
def field_allow_none(field: ModelField) -> bool:
69-
if is_union(field.field_info.annotation):
70-
for t in get_args(field.field_info.annotation):
71-
if is_none_type(t):
72-
return True
69+
ann = field.field_info.annotation
70+
if not is_union(ann):
71+
origin = get_origin(ann)
72+
if origin is None:
73+
return False
74+
elif origin is Annotated:
75+
return field_allow_none(get_args(ann)[0])
76+
elif not is_union(origin):
77+
return False
78+
for t in get_args(ann):
79+
if is_none_type(t):
80+
return True
7381
return False
7482

7583
@lru_cache(maxsize=512)

0 commit comments

Comments
 (0)