TypedChoiceField или ChoiceField в Django
Когда вы должны использовать TypedChoiceField с функцией coerce над ChoiceField с чистым методом в форме для поля?
Другими словами, почему вы используете MyForm поверх MyForm2 или наоборот. Это просто вопрос предпочтения?
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)
Ответы
Ответ 1
Я бы использовал метод clean_field
для выполнения "тяжелого подъема". Например, если ваше поле требует нетривиальной, выборочной очистки и/или преобразования типов и т.д. Если, с другой стороны, требование простое, например, принуждение к int
, тогда clean_field
, вероятно, является излишним. TypedChoiceField
- это способ пойти в этом случае.