Как я могу получить доступ к сквозному объекту Django ManyToManyField? - PullRequest
0 голосов
/ 20 марта 2010

В моем приложении Django есть следующие модели. Как я могу из модели Team найти все User объекты, которые были приняты как Истинные в модели Членства? Я знаю, что мне нужно использовать Team.objects.filter(), но я не уверен, как проверить значение поля accepted.

from django.contrib.auth.models import User
class Team(models.Model):
    members = models.ManyToManyField(User, through="Membership")

class Membership(models.Model):
    user = models.ForeignKey(User)
    team = models.ForeignKey(Team)
    accepted = models.BooleanField(default=False)

Ответы [ 2 ]

1 голос
/ 20 марта 2010

Принятые члены команды:

team_42.members.filter(membership__accepted=True)

Пользователь команды alice был принят:

alice.team_set.filter(membership__accepted=True)

Полагаю, вы хотите получить набор объектов Team или User, а не набор промежуточных объектов Membership. Вы ответили на вопрос самостоятельно, но с ответом, который дает набор объектов Членства.

0 голосов
/ 20 марта 2010

Team.objects.filter(members__accepted__exact=True)

Взгляните на это . Там много хороших примеров и объяснений.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...