我有两个带有外键关系的模型,当我使用{% 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订购的。
答案 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中,您没有指定排序。