Django 获取带注释的模型字段
Django get annotated model fields
我有两个模型 Player 和 Game
class Player(models.Model):
userId = models.CharField(max_length = 150, primary_key=True)
username = models.CharField(max_length = 250)
email = models.CharField(max_length = 150)
playedGames = models.IntegerField()
class Game(models.Model):
player = models.ForeignKey(Player, on_delete=models.CASCADE)
date = models.DateTimeField()
award = models.IntegerField()
并且我要求让所有玩家获得他们的最高奖励。
wins = Player.objects.annotate(maxAward=Max('game__award')).values().order_by('-maxAward')
但我还想显示所有选定游戏的 'date'(奖励最高的游戏)。我应该如何更改我的请求?
您可以通过子模型指定必要的字段:
wins = Player.objects.annotate(
max_award=Max('game__award')
).filter(
game__award=F('max_award')
).annotate(
date=F('game__date')
award=F('game__award')
).values(
'userId',
'date',
'award'
).order_by('-max_award')
我有两个模型 Player 和 Game
class Player(models.Model):
userId = models.CharField(max_length = 150, primary_key=True)
username = models.CharField(max_length = 250)
email = models.CharField(max_length = 150)
playedGames = models.IntegerField()
class Game(models.Model):
player = models.ForeignKey(Player, on_delete=models.CASCADE)
date = models.DateTimeField()
award = models.IntegerField()
并且我要求让所有玩家获得他们的最高奖励。
wins = Player.objects.annotate(maxAward=Max('game__award')).values().order_by('-maxAward')
但我还想显示所有选定游戏的 'date'(奖励最高的游戏)。我应该如何更改我的请求?
您可以通过子模型指定必要的字段:
wins = Player.objects.annotate(
max_award=Max('game__award')
).filter(
game__award=F('max_award')
).annotate(
date=F('game__date')
award=F('game__award')
).values(
'userId',
'date',
'award'
).order_by('-max_award')