Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django模板筛选2个多字段_Python_Django_Django Templates_Django Orm - Fatal编程技术网

Python Django模板筛选2个多字段

Python Django模板筛选2个多字段,python,django,django-templates,django-orm,Python,Django,Django Templates,Django Orm,我正在用Django编写一个应用程序,它将一个项目中的所有运动员分类(轻量级、重量级等),然后显示从得分最高的运动员到得分最低的运动员排序的每个类别中的运动员。我无法用我的模板将运动员分类;要么显示所有运动员,要么不显示 以下是我的模型和模板的相关部分: 一名运动员可以分为多个类别,每个类别都有多名运动员。类别也按日期排序 型号.py class Entry(models.Model): athlete = models.ForeignKey(Athlete, related_name=

我正在用Django编写一个应用程序,它将一个项目中的所有运动员分类(轻量级、重量级等),然后显示从得分最高的运动员到得分最低的运动员排序的每个类别中的运动员。我无法用我的模板将运动员分类;要么显示所有运动员,要么不显示

以下是我的模型和模板的相关部分:

一名运动员可以分为多个类别,每个类别都有多名运动员。类别也按日期排序

型号.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()
事件发布.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 %}
{%用于类别中的类别%}
{{category.category_name}

{entries%%中的条目的百分比} {条目中运动员类别的百分比。运动员类别%} {%如果运动员\类别==类别%} {{entry.atternate.first_name}{{entry.atternate.last_name}}-{{entry.placeing}

{%endif%} {%endfor%} {%endfor%} {%endfor%}
模板应该列出每个类别,然后根据他的位置列出该类别中的所有运动员。输出应为:

男式轻量级
约翰·多伊-1
乔公众-2

女子轻量级
无名氏-1
伊娃·布劳恩-2

等等

目前我得到:

男子轻量级

女子轻量级


它列出了类别,但没有列出运动员。我哪里出错了?

看起来模板中有不必要的循环。可能是这样的:

{% for category in categories %}
    <p>{{ category.category_name }}</p>

    {% for entry in category.entries %}
        <p>{{ entry.athlete.first_name }} {{ entry.athlete.last_name }} - {{ entry.placing }}</p>
    {% endfor %}
{% endfor %}
在第二种情况下,您必须将
category.entries
替换为模板中的
category.atterners\u排序的

def athletes_ordered(self):
    return self.entries.order_by('athlete_score')