我无法弄清楚如何创建包含多个Question
及其Answer
s的网页。主要的是,我希望User
采用包含多个Quiz
的{{1}},Questions
包含多个Questions
。
我想要的第一件事是用它的答案渲染至少一个Answers
,如果它有效,那么弄清楚如何在一个页面上渲染多个问题(整个测验),但它不会渲染除Question
以外的任何内容。
但是当我在视图中尝试base.html
时,它会返回:
异常类型:/ language-tests / question
中的TypeError异常值:'答案'对象不可迭代
你有什么想法,有什么不对吗?
question.html
print question_form
FORM
{% extends 'base.html' %}
{% block content %}
{{ question_form }}
{% endblock %}
查看 - 仅查看是否可以呈现问题表单的简单视图
class QuestionForm(forms.Form):
def __init__(self, question, *args, **kwargs):
super(QuestionForm, self).__init__(*args, **kwargs)
choice_list = [x for x in question.get_answers_list()]
self.fields["answers"] = forms.ChoiceField(choices=choice_list,
widget=forms.RadioSelect)
模型
def question(request):
question_form = forms.QuestionForm(question=models.Question.objects.get(pk=1))
return render(request,'question.html',context={'question_form':question_form})
答案 0 :(得分:1)
Django表单字段choices
参数应该是2元组的可迭代,请参阅https://docs.djangoproject.com/en/1.9/ref/models/fields/#choices
您可能想要说出类似
的内容choice_list = [(x.id, x.text) for x in question.get_answers_list()]
你的异常'Answer' object is not iterable
是因为Django试图迭代这个2元组,而是找到了Answer对象。