获取中间M2M上组的最后一个成员

时间:2011-11-29 23:36:24

标签: django django-models

如果我们查看现有的docs,添加最后一个成员的最佳方法是什么?这与this类似,但我想做的就是能够做到这一点。

group = Group.objects.get(id=1)
group.get_last_member_added()  #This is by ('-date_added')
<Person: FOO>

我认为最好的方法是通过经理,但你如何在中间模型上做到这一点?

class Person(models.Model):
    name = models.CharField(max_length=128)

    def __unicode__(self):
        return self.name

class Group(models.Model):
    name = models.CharField(max_length=128)
    members = models.ManyToManyField(Person, through='Membership')

    def __unicode__(self):
        return self.name

class Membership(models.Model):
    person = models.ForeignKey(Person)
    group = models.ForeignKey(Group)
    date_joined = models.DateField()
    invite_reason = models.CharField(max_length=64)

1 个答案:

答案 0 :(得分:1)

不需要经理!除非您想添加某种尝试/除非没有最新成员。

group = Group.objects.get(id=1)
latest_person = group.members.latest('membership__date_joined')