I recently added a ChoiceField to my form but now it always returns invalid; I verified this with a 'print(form.is_valid())'. All fields are displayed properly in my template and values are always being passing so I can't fathom why the form is returned as invalid.
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)
This is online database so I use the modelform to create the item and the form to search through and pull the results. Therefore, I need both to work.
EDIT:
I discovered it was selecting an invalid choice. Ideas how to fix this?
A ModelChoiceField
should be referring to a queryset to generates its choices. In your example, you show:
Investment_Level = forms.ModelChoiceField(queryset=CATEGORIES,)
You don't show what CATEGORIES
is, but typically you would do something like:
Investment_Level = forms.ModelChoiceField(queryset=Foo.objects.all(),)
If you actually want the dropdown to display hard-coded choices from constants, you should be using a regular ChoiceField, not a ModelChoiceField.
This is online database so I use the modelform to create the item
No, you're not. That's why you have so much duplicate code and the problem. Use an actual ModelForm :
from .models import Lead
class FormForReq(forms.ModelForm):
class Meta:
model = Lead
fields = '__all__'
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.