django max和groupby在一起

时间:2017-02-20 10:36:04

标签: django python-3.x

我有一个看起来像这样的模型 player_info,game,score,creation_date

我想获取特定游戏中每个玩家得分最高的记录。

感谢任何帮助。

编辑:

class Game(models.Model):
    name = models.CharField(max_length=50)
    description = models.TextField(max_length=1000)
    logo = models.URLField()
    resource_info = models.URLField()
    cost = models.DecimalField(default=0.0, decimal_places=2, max_digits=10)
    modified_date = models.DateTimeField(auto_now_add=True)
    developer_info = models.ForeignKey(User, related_name='uploaded_games', on_delete=models.CASCADE)

class Score(models.Model):
    game_info = models.ForeignKey(Game, related_name='game_info',on_delete=models.CASCADE)
    player_info = models.ForeignKey(User, related_name='player_info', on_delete=models.CASCADE)
    last_played = models.DateTimeField(auto_now=True)
    score = models.BigIntegerField(default=0)

1 个答案:

答案 0 :(得分:0)

如果我理解正确:

  • 您希望filter Score Game GROUP BY。{/ li>
  • 然后你想要User MAX获得GROUP BY得分

values部分有点棘手,但你可以使用annotate + from django.db.models import Max Score.objects.filter(game_info=...) .values('player_info').annotate(max=Max('score')) 来实现它。

尝试这样的事情:

<? instead of <?php

更多信息示例:https://docs.djangoproject.com/en/1.10/topics/db/aggregation/