如何在模板中通过foreignkey访问时对django查询集进行排序

时间:2015-09-23 03:35:00

标签: django django-models django-templates

我有两个带有外键关系的模型,当我使用{% for badge in badge_type.badge_set.all %}遍历徽章对象时,它们按ID排序,但是我希望它们按sort_order或{{1}排序根据{{​​1}}

的字段
name

视图中,我将在我的上下文中发送此内容:

Meta

模板

class BadgeType(models.Model):
    name = models.CharField(max_length=50, unique=True)

class Badge(models.Model):
    name = models.CharField(max_length=50, unique=True)
    badge_type = models.ForeignKey(BadgeType)
    sort_order = models.PositiveIntegerField(blank=True, null=True)
    ...

    class Meta:
        order_with_respect_to = 'badge_type'
        ordering = ['sort_order', 'name']

但是,在模板中,他们是根据他们的ID订购的。

1 个答案:

答案 0 :(得分:1)

您可以使用此模板过滤器: dictsort

{% for badge_type in badge_types|dictsort:"name" %}
      {{badge_type.name}}

      {% for badge in badge_type.badge_set.all|dictsort:"name" %}
          {{badge.name}}
      {% endfor %}
{% endfor %}

但是,我认为你的问题是order-with-respect-to

因为在模型BadgeType中,您没有指定排序。