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')