REFERRAL_CHOICES = (
(None, 'Please choose'),
('search', 'From a search engine'),
('social', 'From a social network'),
)
referral_source = forms.ChoiceField(
choices=REFERRAL_CHOICES
)
形式有选择字段我也有一个clean_company_size
功能如果该字段被设置为一个良好的值,检查:
def clean_company_size(self):
company_size = self.cleaned_data.get('company_size', None)
if company_size is None:
raise ValidationError('Please select a company size')
return company_size
如果我将or company_size == 'None'
条件添加到上面的无检查,所有工作正常。但是,我很好奇为什么None值被转换为字符串。在选择字段中完成默认提示并且需要该字段的最佳方式是什么?
中使用“”代替
None
所有POST和GET变量以及选择HTML标记值最初都以字符串形式发送。 Django将它们转换为-say-int时,它可以从模型中扣除。在你的情况下,无法将“无”字符串与“无”对象区分开来,它们都是可能的值。你可能更喜欢在你的REFERRAL_CHOICHES – furins 2013-03-26 22:43:38中使用“”而不是None。如果你做出这个答案,我会对它进行投票并接受它,因为它是有效的。 – 2013-03-26 22:44:38
谢谢:)在这里它是 – furins 2013-03-26 22:53:28