Django,我如何循环HTML中的选项并在单选按钮中显示?

时间:2017-02-26 22:18:08

标签: html django

在Django中我已经定义了一些问题,我想给用户一个表单以创建自己的选择。我在HTML中获得的输出是下拉框,但我希望以“单选按钮”格式显示它。

HTML:

<form action="" method="post" autocomplete="off">
{% csrf_token %}
    {% for question in context %}
    <input type="radio" name="{{ question.questionText }}" value="">
    {{ question }}
    <label for=""></label>
    {% endfor %}
<input type="submit" value="Submit">

Models.py:

class Choice(models.Model):
    question = models.ForeignKey(Question, on_delete=models.CASCADE)
    choiceText = models.CharField(max_length=200)
    votes = models.IntegerField(default=0)

    def __str__(self):
        return self.choiceText

Views.py:

def addchoice(request):
    form_class = AddChoiceForm

    if request.method == 'POST':
        form = form_class(request.POST)
        if form.is_valid():
            context = form.save()
    else:
        context = form_class()

    return render(request, 'polls/add_a_choice.html', {'context': context})

我附加的输出被添加为图像。 Screenshot is here

1 个答案:

答案 0 :(得分:1)

您没有粘贴AddChoiceForm代码,但我可以想象它的样子。

问题是你正在遍历表单(它的表单字段)并自己生成radio输入,并在下一行中呈现question表单字段的默认html在这种情况下是select

你可以从这里做两件事:

  1. 删除{{ question }}并完全由您自己渲染字段 - 您可以访问模板中的字段属性(如选项)。

  2. 更改表单类中的表单窗口小部件。这里有更多信息:https://docs.djangoproject.com/en/1.10/topics/forms/modelforms/然后放弃自己渲染radio的想法。

  3. 如果可以的话 - 我建议你遵循一个风格指南 - 我看到你混合了一点,你可以在一段时间内发现你的代码混乱。例如,questionText应为question_text。当你render传递的整个字典是context时,context命名表格不是一个好主意(例如我花了一些时间来破译你在那里做的事情) )。