Модель Django: Как получить доступ к «столу соединения»? - PullRequest
0 голосов
/ 02 марта 2011
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 ]

2 голосов
/ 02 марта 2011

Это стандартное обратное отношение ForeignKey:

my_group.membership_set.all() 
1 голос
/ 02 марта 2011

Надеюсь, вы можете использовать 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')) 

Султан

...