Django中的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 个回答
14
我会使用一个叫做 clean_field
的方法来处理一些比较复杂的事情。比如说,如果你的字段需要进行一些不简单的、特别的清理或者类型转换等操作。如果要求比较简单,比如说只是想把数据转换成 int
类型,那么使用 clean_field
可能就有点多余了。在这种情况下,使用 TypedChoiceField
会更合适。