使用文档中的示例: https://docs.djangoproject.com/en/1.2/topics/db/models/#intermediary-manytomany
我可以遍历群组并向每个人展示:
{% for group in group_list %}
{{ group.name }}:
{% for member in group.members.all %}
{{ member.name }}
{% endfor %}
{% endfor %}
但我无法弄清楚如何按照他们加入的顺序显示成员(即,通过membership.date_joined)。在所有人之后使用dictsort:
{% for member in group.members.all|dictsort:"date_joined" %}
会产生一个空的成员列表。我尝试过使用members.through,但似乎无法从中获取任何数据。
答案 0 :(得分:0)
您可以指定ordering
attribute in the model's Meta
- 然后默认情况下会对该模型上的所有查询进行排序。
class Membership(models.Model):
person = models.ForeignKey(Person)
group = models.ForeignKey(Group)
date_joined = models.DateField()
invite_reason = models.CharField(max_length=64)
class Meta:
ordering = ['date_joined']
答案 1 :(得分:0)
找到了解决方法:
在类Group的模型中,我添加了一个方法
def members_by_date(self):
return Membership.objects.filter(group = self).order_by('date_joined')
在模板中:
{% for membership in group.members_by_date %}
{{ membership.person.name }}
我仍然想知道如何在模板中进行动态排序,但是,使用dictsort或其他方式,如果有人有提示。