Как выполнить запрос в django, который выбирает все проекты, членами которых я являюсь? - PullRequest
0 голосов
/ 20 мая 2009

В моем приложении django есть концепция команды.

class Team(models.Model):
    name = models.CharField(max_length=200)
    #snip
    team_members = models.ManyToManyField(User)

Я хотел бы получить все команды, членом которых является зарегистрированный в данный момент пользователь. Что-то вроде

Team.objects.all().filter(request.user.id__in = team_members.all())

Это очевидное не работает. У кого-нибудь есть предложения о том, как сделать такой запрос, не переходя непосредственно к SQL? Я просмотрел документацию по django запросов in, но не смог найти там свой вариант использования.

Большое спасибо! Ник.

1 Ответ

4 голосов
/ 20 мая 2009

Вам не нужно in здесь, Django обрабатывает это автоматически при поиске на ManyToMany.

Кроме того, вы должны понимать, что поля базы данных всегда должны быть в слева поиска, поскольку они фактически обрабатываются как параметры функции.

То, что вы на самом деле хотите, очень просто:

Team.objects.filter(team_members=request.user)

или

request.user.team_set.all()
...