所以我试图从数据库中的一列中获取PostgreSQL的age()函数的结果。Django models.Manager自定义SQL查询“多于一行返回”错误
目标是追加一个新的虚拟列,其中包含自从存储数据库的日期时间起过去的年龄或时间。
我想这在Django的创建models.Manager添加这个新列:
class PriorityManager(models.Manager):
def get_queryset(self):
time_elapsed = RawSQL('SELECT EXTRACT(EPOCH FROM age(datetime)) AS age FROM backend_post',
params=(),
output_field=models.IntegerField())
return super(PriorityManager, self).get_queryset().annotate(score=time_elapsed)
我需要一个得分列,以帮助排序的对象后,比分是基于经过的时间。
查询SELECT EXTRACT(EPOCH FROM age(datetime)) AS age FROM backend_post;
作品在dbshell但在Django上运行它时,下面的消息出现:
ProgrammingError在/ API /后/列表/被用作 子查询返回多行一个表达式
我怀疑问题是查询返回一整列元素,而models.Manager只有一个结果。我相信应该有一些在RawSQL查询中作为参数发送,但我不知道它是什么...
任何人都知道该怎么办?
非常感谢!