簡體   English   中英

在django模型中獲得多對多領域的多對多關聯

[英]Getting many to many fields of many to many association in django model

我在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字段創建了隱式查找。 如果指定,它可以是小寫的模型類,也可以是related_name參數。

因此,基本上,該過濾器表示獲得與玩家相關的團隊相關的錦標賽, p1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM