【发布时间】:2020-09-19 22:48:18
【问题描述】:
我正在使用 Django 模型和 ModelForm 类处理应用程序表单,在应用程序中,它有多个复选框。当我提交表单时,它显示所选选项不是有效选项的错误。我使用 CheckboxSelectMultiple 小部件来选择复选框。如果有人知道请帮助我。
Models.py
from django.db import models
from django.urls import reverse
class Application(models.Model):
genres1=(
('classical','Classical'),
('rock','Rock'),
('musical Theater','Musical Theater'),
('country','country'),
('blues','Blues'),
('christian Contemporary','Christian Contemporary'),
('gospel','Gospel'),
('other','Other'),
)
languages1=(
('english','English'),
('spanish','Spanish'),
('german','German'),
('chinese','Chinese'),
('hindi','Hindi'),
('french','French'),
('russian','Russian'),
('turkish','Turkish'),
)
firstname=models.CharField(max_length=50)
lastname=models.CharField(max_length=50)
Email=models.EmailField()
phonenumber=models.CharField(max_length=15)
genres=models.CharField(max_length=50, choices=genres1)
languages=models.CharField(max_length=50, choices=languages1)
def __str__(self):
return self.firstname
forms.py
from django import forms
from django.forms import ModelForm
from .models import Application
class application(ModelForm):
genres1=(
('classical','Classical'),
('rock','Rock'),
('musical Theater','Musical Theater'),
('country','country'),
('blues','Blues'),
('christian Contemporary','Christian Contemporary'),
('gospel','Gospel'),
('other','Other'),
)
languages1=(
('english','English'),
('spanish','Spanish'),
('german','German'),
('chinese','Chinese'),
('hindi','Hindi'),
('french','French'),
('russian','Russian'),
('turkish','Turkish'),
)
genres=forms.MultipleChoiceField(required=True,widget=forms.CheckboxSelectMultiple,choices=genres1)
languages=forms.MultipleChoiceField(required=True,widget=forms.CheckboxSelectMultiple,
choices=languages1)
class Meta:
model=Application
fields = '__all__'
views.py
from django.shortcuts import render,redirect, get_object_or_404
from onlinetutors.models import Category,tutors
from .forms import application
from .models import Application
def registration(request):
if request.method == 'POST':
form=application(request.POST)
if form.is_valid():
form.save()
firstname=form.cleaned_data['firstname']
lastname=form.cleaned_data['lastname']
Email=form.cleaned_data['Email']
phonenumber=form.cleaned_data['phonenumber']
genres=form.cleaned_data['genres']
languages=form.cleaned_data['languages']
form=Application(firstname=firstname,lastname=lastname,Email= Email,phonenumber=phonenumber,
languages=languages,genres=genres)
form.save()
return redirect("/thankyou/")
else:
form=application()
return render(request,"registration.html",{"form":form})
【问题讨论】:
标签: python django-forms