Python 如何验证Django 1.7中的下拉列表?
我有一个Django表单,它在创建验证时不记录下拉列表值。相反,验证读取的值始终为null。因此,这将触发验证:Python 如何验证Django 1.7中的下拉列表?,python,django,Python,Django,我有一个Django表单,它在创建验证时不记录下拉列表值。相反,验证读取的值始终为null。因此,这将触发验证: This field cannot be null. 我可能做错了什么?我是Django框架的新手,因此如果您有任何帮助,我将不胜感激。这是我的forms.py文件: from django import forms from reviews.models import Rating, Review CHOICES = ( (1,'One Star'), (2,
This field cannot be null.
我可能做错了什么?我是Django框架的新手,因此如果您有任何帮助,我将不胜感激。这是我的forms.py文件:
from django import forms
from reviews.models import Rating, Review
CHOICES = (
(1,'One Star'),
(2,'Two Star'),
(3,'Three Star'),
(4,'Four Star'),
(5,'Five Star')
)
SERVICES = (
(0, 'Select a Service Name or Start typing'),
(85, 'Service1'),
(86, 'Service2'),
(88, 'Service3'),
(89, 'Service4'),
(90, 'Service5')
)
class ReviewForm(forms.ModelForm):
serv_id = forms.ChoiceField(required=True, choices= SERVICES, widget=forms.Select(attrs={'class':'form-control'}))
rating_value = forms.ChoiceField(required = True, choices = CHOICES, widget=forms.RadioSelect(attrs={'class' : ''}))
review_text = forms.CharField(required=True, widget=forms.Textarea(attrs={'class' : 'form-control', 'placeholder': 'Write Review', 'rows':5}))
class Meta:
model = Review
fields = ('rating_value', 'review_text', 'serv_id',)
def clean_serv_id(self):
serv_id = self.cleaned_data['serv_id']
if serv_id <= 0:
raise forms.ValidationError("You need to select a Service.")
只要用户从下拉id整数值中选择一个选项,它就会工作。问题是当id=0时,验证不会触发。用户没有选择服务:您需要从clean\u serv\u id返回值
我本来打算早点发这个的。。问题是我的验证中的比较运算符不正确-哦,我确实需要返回serv_id,我只是在出于某种原因尝试调试之后从原始代码中删除了它。。显然,我在小部件中用作值的数值0在ChoiceField中被解释为0 以下是有效的验证。注意,我还必须将比较运算符更改为==:
def clean_serv_id(self):
serv_id = self.cleaned_data['serv_id']
if serv_id == "0":
raise forms.ValidationError("You need to select a Service.")
else:
return serv_id
谢谢你的意见。嗯,现在验证永远不会被触发。即使当serv_id等于0时,我也在返回serv_id时没有使用else语句,我得到了相同的错误-验证从未触发。只是添加了它!谢谢你看
def clean_serv_id(self):
serv_id = self.cleaned_data['serv_id']
if serv_id == "0":
raise forms.ValidationError("You need to select a Service.")
else:
return serv_id