【问题标题】:Django ModelForm multiple check boxes aren't workingDjango ModelForm 多个复选框不起作用
【发布时间】: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


    【解决方案1】:

    我认为问题可能是因为您在 form.py 中重复了generes1 和languages1 选项。尝试删除那是genere1 和languages1 的选择。 form.py 将使用 models.py 中的选项。不太确定,但试试看。

    【讨论】:

    • 谢谢你的建议,我试过了,还是不行。
    • 问题解决了,我安装了这个库,Django-multiselectfield。现在工作正常。
    猜你喜欢
    • 2013-11-22
    • 2020-04-27
    • 1970-01-01
    • 2015-04-15
    • 2021-10-10
    • 2012-12-14
    • 2017-09-20
    • 2012-11-06
    • 2017-11-20
    相关资源
    最近更新 更多