diff --git a/pydantic/fields.py b/pydantic/fields.py index 600ee536441..ca3a05cfd33 100644 --- a/pydantic/fields.py +++ b/pydantic/fields.py @@ -148,7 +148,7 @@ def __init__(self, default: Any = Undefined, **kwargs: Any) -> None: self.default = default self.default_factory = kwargs.pop('default_factory', None) self.alias = kwargs.pop('alias', None) - self.alias_priority = kwargs.pop('alias_priority', 2 if self.alias else None) + self.alias_priority = kwargs.pop('alias_priority', 2 if self.alias is not None else None) self.title = kwargs.pop('title', None) self.description = kwargs.pop('description', None) self.exclude = kwargs.pop('exclude', None) @@ -395,7 +395,7 @@ def __init__( self.name: str = name self.has_alias: bool = bool(alias) - self.alias: str = alias or name + self.alias: str = alias if alias is not None else name self.type_: Any = convert_generics(type_) self.outer_type_: Any = type_ self.class_validators = class_validators or {} diff --git a/tests/test_aliases.py b/tests/test_aliases.py index 24caa9ed627..53a08dc0a19 100644 --- a/tests/test_aliases.py +++ b/tests/test_aliases.py @@ -335,3 +335,13 @@ def alias_generator(x): 'd_config_parent', 'e_generator_child', ] + + +def test_empty_string_alias(): + class Model(BaseModel): + empty_string_key: int = Field(alias='') + + data = {'': 123} + m = Model(**data) + assert m.empty_string_key == 123 + assert m.dict(by_alias=True) == data