Rename and simplify CustomFieldChoiceField

This commit is contained in:
Jeremy Stretch 2020-01-29 11:00:03 -05:00
parent bc7cf63958
commit f12199dcb5

View File

@ -442,21 +442,18 @@ class CSVChoiceField(forms.ChoiceField):
return self.choice_values[value]
class CustomFieldChoiceField(forms.TypedChoiceField):
class CSVCustomFieldChoiceField(forms.TypedChoiceField):
"""
Accept human-friendly label as input, and return the database value. If the label is not matched, the normal,
value-based input is assumed.
Invert the choice tuples: CSV import takes the human-friendly label as input rather than the database value
"""
def __init__(self, *args, **kwargs):
def __init__(self, choices, *args, **kwargs):
super().__init__(choices=choices, *args, **kwargs)
self.choice_values = {label: value for value, label in unpack_grouped_choices(choices)}
if 'choices' in kwargs:
kwargs['choices'] = {
label: value for value, label in kwargs['choices']
}
def clean(self, value):
# Check if the value is actually a label
if value in self.choice_values:
return self.choice_values[value]
return super().clean(value)
super().__init__(*args, **kwargs)
class ExpandableNameField(forms.CharField):