У меня есть поле выбора в форме, определяемой какДжанго формы с полем выбора не обеспечивает None как выбор
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 передается в строку. Каков наилучший способ выполнить подсказки по умолчанию в поле выбора и иметь это поле?
Все переменные POST и GET, а также теги Select HTML, изначально отправляются в виде строк. Django преобразует их в -say-int, когда он вычитается из модели. В вашем случае невозможно отличить строку «Нет» от объекта «Нет», это оба возможных значения. Вы можете предпочесть использовать «" вместо None в вашем REFERRAL_CHOICHES – furins
Отличное объяснение. Если вы ответите на этот вопрос, я проголосую за него и приму его, поскольку он работает. –
Спасибо :) вот это – furins