例如,如果我有一个模型。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()
有什么想法吗?