Если у меня есть отношение пользователь-группа как отношение ManyToMany и отношение группа-команда как отношение ManyToMany, как мне найти отношение пользователь-группа как объект запроса?
Например, если бы у меня был файл models.py, подобный этому:
class Group(models.Model):
name = CharField(max_length=100)
class User(models.Model):
username = models.CharField(max_length=100)
groups = models.ManyToManyField(Group, blank=True)
class Team(models.Model):
teamname = models.CharField(max_length=100)
groups = models.ManyToManyField(Group, blank=True)
Я знаю, что могу сделать это, создав цикл for, как показано ниже, но было бы гораздо полезнее, учитывая архитектуру django, использовать его как объект запроса.
Мое уродливое решение:
user = User.objects.get(username="Ed")
users_teams = []
user_groups = Group.objects.filter(user=user)
for group in user_groups:
group_teams = Team.objects.filter(group=group)
for team in group_teams:
user_teams.append(team)
Таким образом, это дало бы мне список объектов запроса, которые я мог бы связать с пользователем, но его не так просто использовать, как один набор запросов, содержащий объекты запроса для каждого отношения пользователь-команда.
Я бы предпочел что-то похожее на это:
User.objects.get(username="Ed").groups.team_set.objects.all()
что точно не работает. Любые идеи?