2012-10-15 20 views
12

Próbuję przefiltrować relację wiele-do-wielu przez pole do klasy.Filtrowanie relacji wiele do wielu według relacji w Django

Cytowanie dokumentacji Django, opiszę mój cel

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) 

W tym przykładzie moim celem sould być filtr wiele do wielu relacji i uzyskać tylko Osoba który dołączył jakiś Grupa począwszy od niektórych data (data_joined pole).

Czy to możliwe?

Odpowiedz

23

Można query across relationships z ORM django (lub w tym przypadku odwrotnej relacji):

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

Timmy jestem w tobie zakochany. To jest odpowiedź w stackoverflow, która uczyniła mnie szczęśliwszym. Zawsze. – reformy

Powiązane problemy