Python django:如果未设置choicefield值,则request.POST键为空
我目前正在开始使用django进行web开发。在我的申请中,我想要一个表格,上面有各种各样的问题和他们的选择 在models.py中,创建一个表来存储问题Python django:如果未设置choicefield值,则request.POST键为空,python,django,web-applications,Python,Django,Web Applications,我目前正在开始使用django进行web开发。在我的申请中,我想要一个表格,上面有各种各样的问题和他们的选择 在models.py中,创建一个表来存储问题 class QuizItems(models.Model): question = models.CharField(max_length=255) choices = SeparatedValuesField(token="$") answer = models.IntegerField() 在form.py中,我
class QuizItems(models.Model):
question = models.CharField(max_length=255)
choices = SeparatedValuesField(token="$")
answer = models.IntegerField()
在form.py中,我在form类中重载了_init__uu方法,以便传递qchoose,一个QuizItems实例列表来创建表单字段
def choiceItem(question):
return [(unicode(idx), q) for idx, q in enumerate(question.choices)]
class QuizForm(forms.Form):
def __init__(self, qchoose, *args, **kwargs):
super(QuizForm, self).__init__(*args, **kwargs)
for q in qchoose:
self.fields[str(q.id)] = forms.ChoiceField(required=True,
label=q.question, widget=forms.RadioSelect(),choices=choiceItem(q))
然后在view.py中
在quick.html中
{%用于表单%]中的字段
{{field.label}}
{{field}
{%endfor%}
我想得到idlst,问题id的列表,我可以从中得到正确的答案。当所有的选择字段都被填满时,它工作得很好。问题是如果有任何choicefield值为空,我将无法获取其密钥。我认为,由于request.POST是一个字典,它应该返回所有键,即使其值为空。谁能帮我一下我的代码出了什么问题或者有什么遗漏?谢谢大家! 您也应该在POST上使用表单,然后调用
is\u valid()
并访问表单的已清理数据目录。起初,我不确定您是否正在检查请求的值。POST QueryDict django正在返回给您。您没有向我们显示发生实际错误的代码行。我使用form=QuizForm(qchoose,request.POST)
获取表单,但是form.is\u valid()
无法正常工作,因为当有空值时它仍然返回True。我认为这是因为request.POST中并没有键和空值关联,所以并没有出现错误。我不知道为什么钥匙没有归还。
if request.method == 'POST':
idlst = request.POST.keys()
else:
# qchoose is a list of quizitems
form = QuizForm(qchoose)
{% for field in form %}
<li><b> {{ field.label }} </b></li>
<ul> {{ field }} </ul>
{% endfor %}