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