>我有下一个查询集:
Article.objects.filter(finished=True, updated_at__range=[start, end]).extra(
select={'hour': 'extract(hour from updated_at)'}).values('hour').annotate(categorized=Count('id'))
我收到错误:
"编程错误:列引用"updated_at"不明确 第 1 行:选择 (摘录(从 updated_at 中摘录的小时((作为"小时",计数("艺术...">
我应该怎么做?
编辑:查询集无需按日期"updated_at__range=[开始,结束]"过滤即可工作,但我需要该过滤器。
这与 Django 无关。您正在插入原始 SQL(extract
子句(,但无法限定updated_at来自其中的表。假设文章模型位于名为"myapp"的应用程序中,它将是这样的:
select={'hour': 'extract(hour from myapp_article.updated_at)'})
如果你是通过网络搜索来到这里的:当我向过滤器添加prefetch_related
和select_related
语句时,我开始出现错误column reference "created" is ambiguous
。
虽然最初我的查询.extra(where=['EXTRACT(hour from created) >19 OR EXTRACT(hour from created) <6'])
工作,但在添加 select_related/prefetch( 时它停止工作。
解决方案是在字段名称之前添加myappname_mymodelname.
。