From 4cd44434bea4a27dc4bf5f696aefbb17c75619fa Mon Sep 17 00:00:00 2001 From: Rigel Bezerra de Melo Date: Mon, 9 Feb 2026 18:29:46 +0000 Subject: [PATCH] prediction claude 14371 --- fastapi/_compat/v2.py | 3 +++ fastapi/dependencies/utils.py | 9 ++++++++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/fastapi/_compat/v2.py b/fastapi/_compat/v2.py index eb5c06edd9e54..48b93c6c47e76 100644 --- a/fastapi/_compat/v2.py +++ b/fastapi/_compat/v2.py @@ -107,6 +107,9 @@ class ModelField: @property def alias(self) -> str: + va = self.field_info.validation_alias + if isinstance(va, str): + return va a = self.field_info.alias return a if a is not None else self.name diff --git a/fastapi/dependencies/utils.py b/fastapi/dependencies/utils.py index 262dba6fdd667..6b9be77f04b08 100644 --- a/fastapi/dependencies/utils.py +++ b/fastapi/dependencies/utils.py @@ -523,7 +523,14 @@ def analyze_param( ) if isinstance(field_info, (params.Form, temp_pydantic_v1_params.Form)): ensure_multipart_is_installed() - if not field_info.alias and getattr(field_info, "convert_underscores", None): + # Get validation_alias if it's a simple string (not AliasPath/AliasChoices) + validation_alias = getattr(field_info, "validation_alias", None) + if isinstance(validation_alias, str): + alias = validation_alias + elif ( + not field_info.alias + and getattr(field_info, "convert_underscores", None) + ): alias = param_name.replace("_", "-") else: alias = field_info.alias or param_name