我正在研究包含两个模型的https://docs.djangoproject.com教程项目。
民意调查:
class Poll(models.Model):
question = models.CharField(max_length=200)
pub_date = models.DateTimeField('date published')
def was_published_recently(self):
now = timezone.now()
return now - datetime.timedelta(days=1) <= self.pub_date < now
was_published_recently.admin_order_field = 'pub_date'
was_published_recently.boolean = True
was_published_recently.short_description = 'Published recently?'
def __unicode__(self):
return self.question
和选择:
class Choice(models.Model):
poll = models.ForeignKey(Poll)
choice_text = models.CharField(max_length=200)
votes = models.IntegerField(default=0)
def __unicode__(self):
return self.choice_text
有一个详细信息视图,显示投票问题,以及该问题的选项,并允许用户投票。并且结果视图再次显示问题,以及每个选项的当前投票数。
我已经正确显示了所有内容,但我正在尝试添加教程中未涵盖的功能,而且我不确定如何去做。我想这样做,以便在结果页面上选票最多的选项获得某种特殊格式,以表示它是当前的领导者。
现在在模板中我只有一个for循环,它输出每个选项,它的值以它们存储的顺序排列。
{% extends "polls/base.html" %}
{% block content %}
<h1>{{ poll.question }}</h1>
<ul>
{% for choice in poll.choice_set.all %}
<li>{{ choice.choice_text }} -- {{ choice.votes }} vote{{ choice.votes|pluralize }}</li>
{% endfor %}
</ul>
<a href="{% url 'polls:detail' poll.id %}">Vote again?</a>
{% endblock %}
当我在for循环中时,我有点想弄清楚如何知道我是否选择得票最多,这样我就可以通过某种条件来改变格式。
我只是需要在正确的方向上轻推一下。在模板本身中是否有某种方式我可以知道哪个选项的票数最多?或者我是否需要在视图中找出并将其传递给模板?如果两者都可能,那么一个或另一个被认为是首选?
答案 0 :(得分:1)
如果我理解正确,你可以写custom assignment template tag,然后在if ... else中使用它。
{% get_max_votes poll.choice_set.all as leader %}
{% for choice in poll.choice_set.all %}
{% ifequal choice leader %}
{% endif %}
{% endfor %}