比方说,我有以下型号:订购一个QuerySet通过聚合字段值
class Contest:
title = models.CharField(max_length = 200)
description = models.TextField()
class Image:
title = models.CharField(max_length = 200)
description = models.TextField()
contest = models.ForeignKey(Contest)
user = models.ForeignKey(User)
def score(self):
return self.vote_set.all().aggregate(models.Sum('value'))[ 'value__sum' ]
class Vote:
value = models.SmallIntegerField()
user = models.ForeignKey(User)
image = models.ForeignKey(Image)
一个网站的用户可以贡献自己的图像数竞赛。然后其他用户可以向上或向下投票。 一切工作正常,但现在我想显示一个页面,用户可以在其中看到某个比赛的所有贡献。图像应按其得分排序。 所以我尝试了以下内容:
Contest.objects.get(pk = id).image_set.order_by('score')
正如我担心这是行不通的,因为“成绩”是一个可以在查询中使用任何数据库字段。
是的,可以。您只需将总和作为查询的一部分。 – 2009-01-24 13:36:12
'RelatedManager'对象没有属性'排序' :( – okoman 2009-01-24 13:45:08
@okoman ...这意味着你没有使用list()函数转换为列表 – Jiaaro 2009-07-16 14:47:48