鉴于以下模型: -
class Player(models.Model):
pass
class Game(models.Model):
date = models.DateField(unique=True)
player_chosen = models.ManyToManyField(
Player,
through='GamePlayerMembership'
)
class GamePlayerMembership(models.Model):
game = models.ForeignKey(Game)
player = models.ForeignKey(Player)
injured = models.BooleanField(default=False)
在过去10场比赛中,球员没有受伤的球员会员资格最有效的方法是什么。
对于某些游戏,可能甚至不存在该玩家和该游戏的GamePlayerMembership,但如果有游戏,那么我需要10列表中的该项为无。
我在想,如果我能抓住那些没有该球员会员资格的比赛,将它们与那些有比赛的比赛结合起来,并且他们没有受伤,然后拿走最后10名那就行了,但我真的不知道如何去做第一点。
有什么想法吗?
答案 0 :(得分:0)
试试这个:
Game.objects.filter(gameplayermembership__player=player, gameplayermembership__injured=False)
或:
Game.objects.exclude(gameplayermembership__player=player)