什么时候应该使用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)
答案 0 :(得分:12)
我会使用clean_field
方法进行“重举”。例如,如果您的字段需要非平凡的自定义清理和/或类型转换等。另一方面,如果要求很简单,例如强制转换为int
,那么clean_field
可能< / em>一个矫枉过正。在这种情况下,TypedChoiceField
将成为可行的方法。