1

我有一个定义为形式的选择字段

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 值被强制转换为字符串。在选择字段中完成默认提示并要求该字段的最佳方法是什么?

4

1 回答 1

1

所有POSTGET变量以及SelectHTML 标记值最初都是作为字符串发送的。当它可以从模型中扣除时, Django 将它们转换为 -say- int。在您的情况下,无法将“None”字符串与“None”对象区分开来,它们都是可能的值。您可能更喜欢使用 "" 而不是None在您的REFERRAL_CHOICHES

于 2013-03-26T22:52:02.643 回答