2012-10-15 59 views
12

我想通过类字段过滤一些的多对多关系。在Django中通过关系字段过滤多对多关系

报价Django文档,我将解释我的目标

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) 

在这个例子中我的目标前人的精力进行滤波多对多的关系,并获得唯一的谁加入了一些集团从一定开始日期(date_joined字段)。

可能吗?

回答

23

您可以query across relationships与Django的ORM(或者在这种情况下反向关系):

person = Person.objects.filter(membership__group=example_group, membership__date_joined__gte=example_date) 
+3

提米我爱你。这是stackoverflow中的答案,让我更开心。永远。 – reformy