mirror of https://github.com/tiangolo/fastapi.git
🐛 Fix parsing values in FormData for Union/Optional in list, set, tuple and more for PydanticV2.
This commit is contained in:
parent
f7e3559bd5
commit
3d90df0718
|
|
@ -223,7 +223,21 @@ if PYDANTIC_V2:
|
|||
) and not isinstance(field.field_info, params.Body)
|
||||
|
||||
def is_sequence_field(field: ModelField) -> bool:
|
||||
return field_annotation_is_sequence(field.field_info.annotation)
|
||||
return field_annotation_is_sequence(
|
||||
field.field_info.annotation
|
||||
) or field_annotation_is_optional_sequence(field.field_info.annotation)
|
||||
|
||||
def field_annotation_is_optional_sequence(
|
||||
annotation: Union[Type[Any], None]
|
||||
) -> bool:
|
||||
origin = get_origin(annotation)
|
||||
if origin is Union:
|
||||
args = get_args(annotation)
|
||||
first_argument = args[0]
|
||||
if hasattr(first_argument, "__origin__"):
|
||||
if first_argument.__origin__ in sequence_types:
|
||||
return True
|
||||
return False
|
||||
|
||||
def is_scalar_sequence_field(field: ModelField) -> bool:
|
||||
return field_annotation_is_scalar_sequence(field.field_info.annotation)
|
||||
|
|
|
|||
Loading…
Reference in New Issue