TypedChoiceField или ChoiceField в Джанго

когда вы должны использовать TypedChoiceField с функцией принуждения над 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 is наверное излишним. TypedChoiceField было бы в этом случае.