【发布时间】:2010-12-19 00:02:39
【问题描述】:
复制: Using a Django custom model method property in order_by()
我有两个模型;一个存储帖子,另一个存储对这些帖子的投票,使用 ForeignKey 字段相关。每个投票都存储为单独的记录,因为我需要跟踪投票的用户和日期时间。
我创建了一个辅助函数,它使用 Django 1.1 聚合 Sum 函数计算所有投票。
class Post(models.Model):
...some fields...
def tally(self):
return self.vote_set.all().aggregate(Sum('value'))['value__sum'] or 0
class Vote(models.Model):
post = models.ForeignKey(Post)
value = models.IntegerField()
...some fields...
我需要进行的一个查询需要对计数的order_by 进行一次查询。然而:
Post.objects.all().order_by('tally')
产生以下模板错误:
渲染时遇到异常: 无法将关键字“tally”解析为 场地。选择是:date_created, 描述、id、is_active、名称、 相关,蛞蝓,用户,投票
有什么方法可以让order_by() 函数获取可调用对象?
【问题讨论】:
标签: django aggregate django-queryset