Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django表单未选择选项_Python_Django - Fatal编程技术网

Python Django表单未选择选项

Python Django表单未选择选项,python,django,Python,Django,我有一个django项目,在这个项目中,我有一个django forms.py,它包含一个字段调用类别,该类别选择作为数据库查询结果生成的框输入元素。 如果我从数据库的“选择”下拉列表中选择一个选项,我会不断收到错误: **strong text**Select a valid choice. That choice is not one of the available choices 代码如下: Forms.py from django import forms #from django.

我有一个django项目,在这个项目中,我有一个django forms.py,它包含一个字段调用类别,该类别选择作为数据库查询结果生成的框输入元素。 如果我从数据库的“选择”下拉列表中选择一个选项,我会不断收到错误:

**strong text**Select a valid choice. That choice is not one of the available choices
代码如下:

Forms.py

from django import forms
#from django.contrib.auth.models import User
from signer.models import CreateSingleSigner

class CreateSingleSignerForm(forms.ModelForm):
    category = forms.ModelChoiceField(
        required = True,
        help_text = 'category', 
        queryset=CreateSingleSigner.objects.all().values_list(
                'category', flat=True
            ).distinct()
    )
我的观点

from django.shortcuts import render
from django.http import HttpResponse, HttpResponseRedirect
from signer.models import CreateSingleSigner
from signer.forms import CreateSingleSignerForm
from django.template import RequestContext

def singlesigner(request):
    context = {}
    if request.method == 'POST':
        createsinglesigner_form = CreateSingleSignerForm(data=request.POST)
        if createsinglesigner_form.is_valid():  
            createsinglesigner.category = request.POST['category']
            createsinglesigner_form.save()
        else:
            print createsinglesigner_form.errors
    else:
        # context['createsinglesigner'] = CreateSingleSigner()
        createsinglesigner_form =CreateSingleSignerForm()

    return render(request, "signer/singlesigner.html", {"createsinglesigner_form":createsinglesigner_form}, RequestContext(request))
我的模特

from django.db import models

class CreateSingleSigner(models.Model):
        category = models.CharField(max_length = 32)

有人能告诉我哪里出了问题吗?

请尝试以下方法之一来解决问题:

  • 尝试在
    CreateSingleSigner
    模型中定义unicode的转换:

    class CreateSingleSignerForm(forms.Form):
    
        def __unicode__(self):
            return self. category
    
  • 解释
    modelcoocefield
    将使用指定字段的
    \uuuu unicode\uuu
    表示来显示和验证字段

  • 尝试在窗体的
    \uuuu init\uuuu
    方法中设置选项

    class CreateSingleSignerForm(forms.Form):
        category = forms.ChoiceField(choices=[], required=False)
    
        def __init__(self, *args, **kwargs):
            super(CreateSingleSignerForm, self).__init__(*args, **kwargs)
            self.fields['category'].choices = CreateSingleSigner.objects.all().values_list('category', flat=True).distinct()
    
    解释:模型选择字段的查询集参数不能是
    值列表
    ,因为它将保存关系,因此django必须使用完整的模型对象,而不是模型对象的特定值


  • 请尝试以下方法之一来解决此问题:

  • 尝试在
    CreateSingleSigner
    模型中定义unicode的转换:

    class CreateSingleSignerForm(forms.Form):
    
        def __unicode__(self):
            return self. category
    
  • 解释
    modelcoocefield
    将使用指定字段的
    \uuuu unicode\uuu
    表示来显示和验证字段

  • 尝试在窗体的
    \uuuu init\uuuu
    方法中设置选项

    class CreateSingleSignerForm(forms.Form):
        category = forms.ChoiceField(choices=[], required=False)
    
        def __init__(self, *args, **kwargs):
            super(CreateSingleSignerForm, self).__init__(*args, **kwargs)
            self.fields['category'].choices = CreateSingleSigner.objects.all().values_list('category', flat=True).distinct()
    
    解释:模型选择字段的查询集参数不能是
    值列表
    ,因为它将保存关系,因此django必须使用完整的模型对象,而不是模型对象的特定值


  • 提供与呈现选项相关的模板代码..以及验证表单后<代码>表单.非字段错误的值是什么?提供与呈现选项相关的模板代码..以及验证表单后<代码>表单.非字段错误的值是什么?仍然具有“选择有效选项。该选项不是可用选项之一”另外,调用
    createsinglesigner\u form.non\u field\u errors
    后,
    createsinglesigner\u form.non\u field\u errors的值是什么?
    是否有效?如何向这些代码行添加外键:category=forms.modelcoocefield(必需=True,help\u text='category',queryset=createsinglesigner.objects.all()。值列表('category',=True).distinct())调用
    createsinglesigner\u表单后仍有“选择有效选项。该选项不是可用选项之一”以及
    createsinglesigner\u表单非字段错误的值是多少?
    是否有效?
    ?如何向这些代码行添加外键:category=forms.modelcoocefield(required=True,help\u text='category',queryset=CreateSingleSigner.objects.all().values\u list('category',flat=True).distinct())