gpt4 book ai didi

django - 是否可以使用可调用的 order_by ?

转载 作者:行者123 更新时间:2023-12-02 11:35:33 24 4
gpt4 key购买 nike

重复: Using a Django custom model method property in order_by()

我有两个模型;一个存储帖子,另一个存储对这些帖子进行的投票,使用外键字段进行关联。每个投票都存储为单独的记录,因为我需要跟踪投票的用户和日期时间。

我创建了一个辅助函数,它使用 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')

产生以下模板错误:

Caught an exception while rendering: Cannot resolve keyword 'tally' into field. Choices are: date_created, description, id, is_active, name, related, slug, user, vote

有什么方法可以让 order_by() 函数接受可调用吗?

最佳答案

事实证明,Annotate 方法就是解决方案:

Post.objects.all().annotate(vote_tally=Sum('vote__value')).order_by('-vote_tally')

关于django - 是否可以使用可调用的 order_by ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1775010/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com