我在定义为
的表单中有一个选择字段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值转换为字符串。在选择字段中完成默认提示并且需要该字段的最佳方法是什么?
答案 0 :(得分:1)
所有POST
和GET
变量以及Select
HTML标记值最初都是以字符串形式发送的。当Django可以从模型中删除时,它们将它们转换为-say- int
。在您的情况下,无法区分“无”字符串和“无”对象,它们都是可能的值。您可能更愿意在None
REFERRAL_CHOICHES