我有一些形式的模型:
class Poll(models.Model):
question_text = models.CharField(max_length=400)
class PollChoice(models.Model):
poll = models.ForeignKey(Poll)
choice_text = models.CharField(max_length=200)
class PollVote(models.Model):
poll_choice = models.OneToOneField(PollChoice)
weight = models.IntegerField()
假设我有两个带有不同问题的民意调查对象(例如“你喜欢菠萝吗?”和“你小时候吮吸拇指吗?”),每个都有'是'和'否'民意调查。目前,如果我尝试在管理员中创建一个新的PollVote对象,PollChoice下拉列表将通过以下选项向我致意:
Yes
No
Yes
No
这并没有告诉我哪个投票我会投票。有没有办法创建这个表格的下拉菜单?
<Do you like pineapples?>
Yes
No
<Did you suck your thumb as a child?>
Yes
No
尖括号中的条目理想情况下是不可选择的,仅用于消除我选择的PollChoice的歧义。如果需要的话,我愿意加入其他应用程序。
答案 0 :(得分:1)
您是否在询问如何根据模型结构呈现HTML?可以使用select_related完成。这是一个例子:
视图:
polls = Poll.objects.select_related('pollchoice__poll').all()
return render(request, 'test_poll.html', {'polls': polls})
模板:
<form>
{% for poll in polls %}
<p><{{ poll.question_text }}></p>
{% for pollchoice in poll.pollchoice_set.all %}
<input type="radio" name="question_{{poll.id}}" value="choice_{{pollchoice.id}}"> {{pollchoice.choice_text}} <br/>
{% endfor %}
{% endfor %}
</form>