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 - это способ пойти в этом случае.