我有一个看起来像这样的模型 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)
答案 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/