通过查询

时间:2016-03-30 14:05:38

标签: django

所以我有这个游戏应用程序,我将列出用户分数。我正在考虑使用的查询如下:

top_list = User.objects.filter().order_by('-score')[:10]

但这是在我向用户实施实际自定义字段“得分”之前。所以我查看了recomended方式,并执行了以下操作:

class UserProfile(models.Model):
    user = models.OneToOneField(User, on_delete=models.CASCADE)
    score = models.IntegerField(default=0);

让我意识到score根本不会是用户中的一个字段(如果我理解的话)?用户将与UserProfile建立一对一的关系,从而保持分数。那么如何根据降序排列的前十名用户列表呢?

2 个答案:

答案 0 :(得分:4)

User.objects.all().order_by('-userprofile__score')[:10]

使用__检查django doc for explanation关于字段查找的内容。

答案 1 :(得分:1)

您可以按相关字段(docs)订购:

top_list = User.objects.filter().order_by('-userprofile__score')[:10]