Django表示错误:选择一个有效的选择。这种选择不是可用的选择之一

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django表示错误:选择一个有效的选择。这种选择不是可用的选择之一相关的知识,希望对你有一定的参考价值。

我正在尝试使用两个下拉菜单创建一个网站:部门和课程编号。下拉菜单的数据来自我的SQL数据库的“courses”表。现在我的网站正确初始化并在下拉菜单中显示正确的选项。但是,当用户在下拉菜单中选择一个选项并提交他们的选择时,Django会抛出“选择一个有效的选择。该选择不是可用的选择之一。”错误。我怀疑我的表单的输出格式不正确,所以在我的数据库中找不到选择,但是我已经阅读了许多其他SO问题,并且仍然无处可去。任何帮助表示赞赏。

models.朋友

from django.db import models

class Dept(models.Model):
    dept = models.CharField(max_length=255, db_column = 'dept')
    class Meta:
        managed = False
        db_table = 'courses'
    def __str__(self):
        return self.dept

class Course_num(models.Model):
    course_num = models.CharField(max_length=255, db_column = 'course_number')
    class Meta:
        managed = False
        db_table = 'courses'
    def __str__(self):
        return self.course_num

forms.朋友

from django import forms
from .models import *

class CourseForm(forms.Form):
    dept = forms.ModelChoiceField(
        queryset=Dept.objects.values_list('dept', flat = True).distinct().\
            order_by('dept').exclude(dept__isnull=True),
        required=False,
        empty_label="No preference",
        label=u"Department")

    course_num = forms.ModelChoiceField(
        queryset=Course_num.objects.all().\
            order_by('course_num').values_list('course_num', flat = True).\
            distinct().exclude(course_num__isnull=True),
        required=False,
        empty_label="No preference",
        label=u"Course Number")

views.朋友

def home(request):
    context = {}
    res = None
    form_CourseForm = CourseForm()
    if request.method == 'GET':
        form_CourseForm = CourseForm(request.GET)
        args = {}
            if form_CourseForm.is_valid():
            dept = form_CourseForm.cleaned_data['dept']
            if dept:
                args['dept'] = dept
            course_num = form_CourseForm.cleaned_data['course_num']
            if course_num:
                args['course_num'] = course_num
    ...
答案

更改您的查询集并尝试

class CourseForm(forms.Form):
    dept = forms.ModelChoiceField(
        queryset=Dept.objects.distinct().
        order_by('dept').exclude(dept__isnull=True),
        required=False,
        empty_label="No preference",
        label=u"Department")

    course_num = forms.ModelChoiceField(
        queryset=Course_num.objects.distinct().
        order_by('course_num').exclude(course_num__isnull=True),
        required=False,
        empty_label="No preference",
        label=u"Course Number")

以上是关于Django表示错误:选择一个有效的选择。这种选择不是可用的选择之一的主要内容,如果未能解决你的问题,请参考以下文章

text select2 django选择有效的选项选项错误

将 Django 中的多对多关系表示为两个多项选择

Django - 选择一个有效的选项。该选择不是可用的选择之一

表单 ModelChoiceField 查询集 + 额外选择字段 django 表单

选择一个有效的选择 Django Filtered Drop Down Menu

选择一个有效的选择。这种选择不是可用的选择之一