When should you use TypedChoiceField with a coerce function over a ChoiceField with a clean method on the form for the field?
In other words why would you use MyForm over MyForm2 or vice versa. Is this simply a matter of preference?
from django import forms
CHOICES = (('1', 'A'), ('2', 'B'), ('3', 'C'))
class MyForm(forms.Form):
my_field = ChoiceField(choices=CHOICES)
def clean_my_field(self):
value = self.cleaned_data['my_field']
return int(value)
class MyForm2(forms.Form):
my_field = TypedChoiceField(choices=CHOICES, coerce=int)
I would use a
clean_fieldmethod for doing “heavy lifting”. For instance if your field requires non-trivial, custom cleaning and/or type conversion etc. If on the other hand the requirement is straightforward such as coercing tointthen theclean_fieldis probably an overkill.TypedChoiceFieldwould be the way to go in that case.