Browse Source

Refactor `_get_multidict_value` for readability

pull/14283/head
Yurii Motov 9 months ago
parent
commit
218d06c765
  1. 34
      fastapi/dependencies/utils.py

34
fastapi/dependencies/utils.py

@ -731,24 +731,24 @@ def _get_multidict_value(
value = values.getlist(alias) value = values.getlist(alias)
else: else:
value = values.get(alias, None) value = values.get(alias, None)
if (
value is None if form_input:
or ( # Special handling for form inputs:
( # Treat empty strings or empty lists as missing values
isinstance( if (
field.field_info, (isinstance(value, str) and value == "")
(params.Form, temp_pydantic_v1_params.Form) or (is_sequence_field(field) and len(value) == 0)
) or form_input ):
)
and isinstance(value, str) # For type checks
and value == ""
)
or (is_sequence_field(field) and len(value) == 0)
):
if form_input or field.required:
return None return None
else: else:
return deepcopy(field.default) # For non-form inputs:
# If value is None or an empty sequence, use the default (if not required) or
# treat as missing (if required)
if value is None or (is_sequence_field(field) and len(value) == 0):
if field.required:
return None
else:
return deepcopy(field.default)
return value return value

Loading…
Cancel
Save