2012-10-15 247 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