如何渲染多个表单 - radiobuttons的答案

时间:2016-07-12 10:57:30

标签: python django django-models django-forms

我无法弄清楚如何创建包含多个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})

1 个答案:

答案 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对象。