所以我試圖從數據庫中的一列中獲取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查詢中作爲參數發送,但我不知道它是什麼...
任何人都知道該怎麼辦?
非常感謝!