【发布时间】:2014-05-25 04:33:27
【问题描述】:
我正在用 Django 编写一个应用程序,该应用程序获取一个项目中的所有运动员,将它们分类(轻量级、重量级等),然后显示每个类别中的运动员,从得分最高的运动员到得分最低的运动员排序运动员。我无法获得将运动员分类的模板;要么显示所有运动员,要么不显示。
以下是我的模型和模板的相关部分:
一个运动员可能属于多个类别,每个类别都有多个运动员。类别也按日期排序。
models.py
class Entry(models.Model):
athlete = models.ForeignKey(Athlete, related_name='entries')
event = models.ForeignKey(Event, related_name='entries')
athlete_category = models.ManyToManyField(Category, related_name='entries')
athlete_score = models.CharField(max_length=20, blank=True)
placing = models.SmallIntegerField(blank=True, null=True)
class Category(models.Model):
category_name = models.CharField(max_length=100)
class CategoryOrder(models.Model):
event = models.ForeignKey(Event)
category = models.ForeignKey(Classes)
category_order = models.SmallIntegerField()
event_placings.html
{% for category in categories %}
<p>{{ category.category_name }}</p>
{% for entry in entries %}
{% for athlete_category in entry.athlete_category %}
{% if athlete_category == category %}
<p>{{ entry.athlete.first_name }} {{ entry.athlete.last_name }} - {{ entry.placing }}</p>
{% endif %}
{% endfor %}
{% endfor %}
{% endfor %}
该模板应该列出每个类别,然后根据他的排名列出该类别中的所有运动员。输出应该是:
男士轻量级
约翰·多伊 - 1
乔公众 - 2
女子轻量级
简·多伊 - 1
伊娃布劳恩 - 2
等等
目前我得到:
男子轻量级
女子轻量级
它列出了类别,但没有列出运动员。我哪里错了?
【问题讨论】:
标签: python django django-templates django-orm