【发布时间】:2017-09-08 18:21:42
【问题描述】:
我最近在表单中添加了一个 ChoiceField,但现在它总是返回无效;我用'print(form.is_valid())'验证了这一点。所有字段都在我的模板中正确显示,并且值总是在传递,所以我无法理解为什么表单被返回为无效。
models.py
class Lead(models.Model):
Company_Name = models.CharField(max_length=180, default="No_Name", blank=True)
Company_ID = models.BooleanField(default=True)
Client_Name = models.CharField(max_length=180, default="No_Name_Provided", blank=True)
Client_ID = models.BooleanField(default=True)
Advertising = models.BooleanField(default=False)
Automotive = models.BooleanField(default=False)
Storage = models.BooleanField(default=False)
Child_Related = models.BooleanField(default=False)
Cleaning = models.BooleanField(default=False)
Coffee = models.BooleanField(default=False)
Computer = models.BooleanField(default=False)
Internet = models.BooleanField(default=False)
Dry_Cleaning = models.BooleanField(default=False)
Education = models.BooleanField(default=False)
Employment = models.BooleanField(default=False)
Financial_Services = models.BooleanField(default=False)
Fitness = models.BooleanField(default=False)
Food = models.BooleanField(default=False)
Eco_Friendly = models.BooleanField(default=False)
Hair_Care_Beauty_Salon = models.BooleanField(default=False)
Health = models.BooleanField(default=False)
Nutrition = models.BooleanField(default=False)
Home_Services = models.BooleanField(default=False)
Maintenance = models.BooleanField(default=False)
Management = models.BooleanField(default=False)
Training = models.BooleanField(default=False)
Miscellaneous = models.BooleanField(default=False)
Pack_and_Mail = models.BooleanField(default=False)
Pet_Related = models.BooleanField(default=False)
Print_Copy = models.BooleanField(default=False)
Real_Estate = models.BooleanField(default=False)
Repair_Restoration = models.BooleanField(default=False)
Retail = models.BooleanField(default=False)
Senior_Care = models.BooleanField(default=False)
Sports = models.BooleanField(default=False)
Tanning_Salon = models.BooleanField(default=False)
Travel = models.BooleanField(default=False)
Vending = models.BooleanField(default=False)
Home_Based = models.BooleanField(default=False)
Investment_Level = models.CharField(max_length=2, choices=CATEGORIES, default=CATEGORIES[0])
forms.py
class FormForReq(forms.Form):
Company_Name = forms.CharField(max_length=180, required=False)
Client_Name = forms.CharField(max_length=180, required=False)
category = forms.BooleanField(initial=False, required=False)
From_Home = forms.BooleanField(initial=False, required=False)
Advertising = forms.BooleanField(initial=False, required=False)
Automotive = forms.BooleanField(initial=False, required=False)
Storage = forms.BooleanField(initial=False, required=False)
Child_Related = forms.BooleanField(initial=False, required=False)
Cleaning = forms.BooleanField(initial=False, required=False)
Coffee = forms.BooleanField(initial=False, required=False)
Computer = forms.BooleanField(initial=False, required=False)
Internet = forms.BooleanField(initial=False, required=False)
Dry_Cleaning = forms.BooleanField(initial=False, required=False)
Education = forms.BooleanField(initial=False, required=False)
Employment = forms.BooleanField(initial=False, required=False)
Financial_Services = forms.BooleanField(initial=False, required=False)
Fitness = forms.BooleanField(initial=False, required=False)
Food = forms.BooleanField(initial=False, required=False)
Eco_Friendly = forms.BooleanField(initial=False, required=False)
Hair_Care_Beauty_Salon = forms.BooleanField(initial=False, required=False)
Health = forms.BooleanField(initial=False, required=False)
Nutrition = forms.BooleanField(initial=False, required=False)
Home_Services = forms.BooleanField(initial=False, required=False)
Maintenance = forms.BooleanField(initial=False, required=False)
Management = forms.BooleanField(initial=False, required=False)
Training = forms.BooleanField(initial=False, required=False)
Miscellaneous = forms.BooleanField(initial=False, required=False)
Pack_and_Mail = forms.BooleanField(initial=False, required=False)
Pet_Related = forms.BooleanField(initial=False, required=False)
Print_Copy = forms.BooleanField(initial=False, required=False)
Real_Estate = forms.BooleanField(initial=False, required=False)
Repair_Restoration = forms.BooleanField(initial=False, required=False)
Retail = forms.BooleanField(initial=False, required=False)
Senior_Care = forms.BooleanField(initial=False, required=False)
Sports = forms.BooleanField(initial=False, required=False)
Tanning_Salon = forms.BooleanField(initial=False, required=False)
Travel = forms.BooleanField(initial=False, required=False)
Vending = forms.BooleanField(initial=False, required=False)
Home_Based = forms.BooleanField(initial=False, required=False)
Investment_Level = forms.ModelChoiceField(queryset=CATEGORIES, required=False)
这是一个在线数据库,所以我使用模型表单来创建项目和表单来搜索并提取结果。因此,我需要两者都工作。
编辑:
我发现它选择了一个无效的选项。想法如何解决这个问题?
【问题讨论】:
-
尝试打印错误:
print(form.errors)并发布你得到的内容 -
你向我们展示了很多对解决这个问题没有帮助的东西,并且遗漏了我们需要看到的东西。由于唯一的 ChoiceField 是 Investment_Level,这就是我们需要在这里看到的全部内容。它显然使用了 queryset=CATEGORIES,所以我们需要看看是什么创建了该查询。
-
@JahongirRahmonov 我这样做并解决了我的问题。谢谢:D