@@ -365,6 +365,10 @@ class EnumField(
365365
366366 descriptor_class = ToPythonDeferredAttribute
367367
368+ default_error_messages : Any = { # mypy is stupid
369+ "invalid_choice" : _ ("Value %(value)r is not a valid %(enum)r." )
370+ }
371+
368372 # use properties to disable setters
369373 @property
370374 def enum (self ):
@@ -611,8 +615,12 @@ def to_python(self, value: Any) -> Union[Enum, Any]:
611615 if value is None :
612616 return value
613617 raise ValidationError (
614- f"'{ value } ' is not a valid "
615- f"{ self .enum .__name__ if self .enum else '' } ."
618+ self .error_messages ["invalid_choice" ],
619+ code = "invalid_choice" ,
620+ params = {
621+ "value" : value ,
622+ "enum" : self .enum .__name__ if self .enum else "" ,
623+ },
616624 ) from err
617625
618626 def get_default (self ) -> Any :
@@ -648,7 +656,12 @@ def validate(self, value: Any, model_instance: Optional[Model]):
648656 self ._try_coerce (value , force = True )
649657 except ValueError as err :
650658 raise ValidationError (
651- str (err ), code = "invalid_choice" , params = {"value" : value }
659+ self .error_messages ["invalid_choice" ],
660+ code = "invalid_choice" ,
661+ params = {
662+ "value" : value ,
663+ "enum" : self .enum .__name__ if self .enum else "" ,
664+ },
652665 ) from err
653666
654667 def formfield (self , form_class = None , choices_form_class = None , ** kwargs ):
@@ -769,6 +782,8 @@ class EnumCharField(EnumField[Type[str]], CharField):
769782 A database field supporting enumerations with character values.
770783 """
771784
785+ empty_values = [empty for empty in CharField .empty_values if empty != "" ]
786+
772787 @property
773788 def primitive (self ):
774789 return EnumField .primitive .fget (self ) or str # type: ignore
0 commit comments