Django Queryset:列引用与额外的查询集是不明确的



>我有下一个查询集:

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_relatedselect_related语句时,我开始出现错误column reference "created" is ambiguous

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

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

最新更新