2011-03-02 77 views
0
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,如何編寫這樣的代碼?謝謝〜Django模型:如何訪問「連接表」?

回答

3

這是一個標準的反向關係的ForeignKey:

my_group.membership_set.all() 
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')) 
 

蘇丹

+0

這是不是有點瘋狂? – user469652 2011-03-02 10:03:04

+0

是的!看起來瘋狂) – sultan 2011-03-02 10:15:49