gpt4 book ai didi

python - 在django模型中获取多对多关联的多对多字段

转载 作者:行者123 更新时间:2023-11-30 23:48:50 28 4
gpt4 key购买 nike

我在 django 中有两个级别的多对多关联。一名球员可以属于一支或多支球队。一支球队可以参加一场或多场比赛。给定一个球员,我想知道他参加过的所有比赛。

以下是简化模型:

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


class Team(models.Model):
team_name = models.CharField(max_length=100, blank=True, null=True)
tournaments_played = models.ManyToManyField(Tournament)

class Player(models.Model):
player_name = models.CharField(max_length=100, blank=True, null=True)
belongs_to_team = models.ManyToManyField(Team)

在我看来,我尝试了以下方法:

pl = Player.objects.get(player_name = "Andrew Flintoff")
ts = pl.belongs_to_team()

这给了我多个团队,现在对于每个团队我想知道他们参加了哪些比赛。

qs_list = []
for t in ts:
team_qs = Team.objects.get(team_name = t)
tourn = team_qs.tournaments_played.all()
qs_list.append(tourn)

然后在我的上下文中我可以传递查询集列表qs_list。有更好/更简单的方法吗?

最佳答案

 p1_tournaments = Tournament.objects.filter(team__player=p1)

为每个反向外键或 m2m 字段创建隐式查找。它可以是小写的模型类,也可以是 lated_name 参数(如果指定)。

因此,本质上,该过滤器表示获取与玩家 p1 相关的球队相关的锦标赛。

关于python - 在django模型中获取多对多关联的多对多字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7880435/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com