Django最好加入

Django最好加入,django,join,orm,Django,Join,Orm,这是我的模型。这就像一个运动队组织应用程序。事件模型是类似棒球比赛的体育事件。任何人都可以属于多个团队。因此,团队成员代表团队的成员身份 class Team(models.Model): name = models.CharField(max_length=100, blank=True) class TeamMember(models.Model): member = models.ForeignKey(User, on_delete=models.CASCADE)

这是我的模型。这就像一个运动队组织应用程序。事件模型是类似棒球比赛的体育事件。任何人都可以属于多个团队。因此,团队成员代表团队的成员身份

class Team(models.Model):
    name = models.CharField(max_length=100, blank=True)

class TeamMember(models.Model):
    member = models.ForeignKey(User, on_delete=models.CASCADE)
    team = models.ForeignKey(Team, on_delete=models.CASCADE)

class Event(models.Model):
    team = models.ForeignKey(Team, on_delete=models.CASCADE)
我想得到我的球队参加过的比赛的名单

def get_queryset(self):
    teams = TeamMember.objects.filter(member=self.request.user).values('team')
    return Event.objects.filter(team__in=teams)
这确实有效,但我想让它成为一个单一的连接。我的老师没那么好。

如我所说

Django提供了一种强大而直观的方式来“跟踪”关系 在查找中,自动为您处理SQL连接,后面是 场景。要跨越关系,请使用相关的字段名 跨模型的字段,用双下划线分隔,直到 去你想去的地方

它也可以反向工作。要引用“反向”关系,请使用 模型的小写名称。

正如所说

Django提供了一种强大而直观的方式来“跟踪”关系 在查找中,自动为您处理SQL连接,后面是 场景。要跨越关系,请使用相关的字段名 跨模型的字段,用双下划线分隔,直到 去你想去的地方

它也可以反向工作。要引用“反向”关系,请使用 模型的小写名称。


叮叮!非常感谢。叮叮!非常感谢。
Event.objects.filter(team__teammember__member=self.request.user)