2

我有下一个查询集:

Article.objects.filter(finished=True, updated_at__range=[start, end]).extra(
    select={'hour': 'extract(hour from updated_at)'}).values('hour').annotate(categorized=Count('id'))

我得到了错误:

“ProgrammingError:列引用“updated_at”不明确第 1 行:SELECT (extract(hour from updated_at)) AS “hour”, COUNT(“art...”

我该怎么办?

编辑:查询集无需按日期“updated_at__range=[start,end]”过滤即可工作,但我需要该过滤器。

4

2 回答 2

7

这与 Django 无关。您正在插入原始 SQL(extract子句),但未能限定 updated_at 来自其中的表。假设 Article 模型在一个名为“myapp”的应用程序中,它会是这样的:

select={'hour': 'extract(hour from myapp_article.updated_at)'})
于 2014-12-19T16:13:03.000 回答
7

如果您通过网络搜索来到这里:当我在过滤器中column reference "created" is ambiguous添加prefetch_relatedselect_related语句时,我开始遇到错误。

虽然最初我的查询.extra(where=['EXTRACT(hour from created) >19 OR EXTRACT(hour from created) <6'])有效,但在添加 select_related/prefetch) 时它停止工作。

myappname_mymodelname.解决方案是在字段名称之前添加。

于 2016-01-05T10:55:01.903 回答