Django模型:如何访问“连接表”?

时间:2011-03-02 08:20:19

标签: django django-models django-queryset

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

所以基本上我想要做的是从组对象访问person / group / data_joined / invite_reason,如何编写这样的代码?感谢〜

2 个答案:

答案 0 :(得分:2)

这是一个标准的反向ForeignKey关系:

my_group.membership_set.all() 

答案 1 :(得分:1)

希望您可以使用intertools


import itertools

queryset = itertools.chain(Person.objects.filter(manytomany__isnull=False).order_by('name'),
                           Group.objects.filter(manytomany__isnull=False).order_by('name'),
                           Membership.objects.filter(manytomany__isnull=True).order_by('date_joined')) 

苏丹