我有一些以下形式的模型:
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()
假设我有两个带有不同问题的 Poll 对象(例如“你喜欢菠萝吗?”和“你小时候吸过拇指吗?”),每个对象都有"is"和“否”PollChoices。目前,如果我尝试在管理中创建一个新的 PollVote 对象,PollChoice 下拉列表将向我显示以下选择:
Yes
No
Yes
No
这并没有告诉我我将投票给哪个民意调查。有没有办法创建这种形式的下拉菜单?
<Do you like pineapples?>
Yes
No
<Did you suck your thumb as a child?>
Yes
No
尖括号中的条目理想情况下是不可选择的,并且仅用于消除我要选择的 PollChoice 的歧义。如果需要的话,我也愿意添加其他应用程序。
您是否询问如何根据您的模型结构渲染为 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>
我是一名优秀的程序员,十分优秀!