@@ -365,6 +365,10 @@ class EnumField(
365
365
366
366
descriptor_class = ToPythonDeferredAttribute
367
367
368
+ default_error_messages : Any = { # mypy is stupid
369
+ "invalid_choice" : _ ("Value %(value)r is not a valid %(enum)r." )
370
+ }
371
+
368
372
# use properties to disable setters
369
373
@property
370
374
def enum (self ):
@@ -611,8 +615,12 @@ def to_python(self, value: Any) -> Union[Enum, Any]:
611
615
if value is None :
612
616
return value
613
617
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
+ },
616
624
) from err
617
625
618
626
def get_default (self ) -> Any :
@@ -648,7 +656,12 @@ def validate(self, value: Any, model_instance: Optional[Model]):
648
656
self ._try_coerce (value , force = True )
649
657
except ValueError as err :
650
658
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
+ },
652
665
) from err
653
666
654
667
def formfield (self , form_class = None , choices_form_class = None , ** kwargs ):
@@ -769,6 +782,8 @@ class EnumCharField(EnumField[Type[str]], CharField):
769
782
A database field supporting enumerations with character values.
770
783
"""
771
784
785
+ empty_values = [empty for empty in CharField .empty_values if empty != "" ]
786
+
772
787
@property
773
788
def primitive (self ):
774
789
return EnumField .primitive .fget (self ) or str # type: ignore
0 commit comments