Django中的TypedChoiceField或ChoiceField

时间:2010-09-09 04:45:51

标签: python django django-forms

什么时候应该使用TypedChoiceField在ChoiceField上使用强制函数,并在字段的表单上使用clean方法?

换句话说,为什么你会在MyForm2上使用MyForm,反之亦然。这只是一个偏好问题吗?

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 个答案:

答案 0 :(得分:12)

我会使用clean_field方法进行“重举”。例如,如果您的字段需要非平凡的自定义清理和/或类型转换等。另一方面,如果要求很简单,例如强制转换为int,那么clean_field 可能< / em>一个矫枉过正。在这种情况下,TypedChoiceField将成为可行的方法。