【问题标题】:Using distinct on annotations在注释上使用 distinct
【发布时间】:2018-06-13 20:49:34
【问题描述】:

我正在尝试获取不同的项目列表。 db 有一个创建的字段,它是 datetime,我需要它作为查询的日期。所以我添加了一个注释。问题是 distinct 对注释不起作用...

distinct_failed_recharges = recharges.filter(
    status=FAILED
).annotate(
    created_date=TruncDate('created')
).distinct(
    'created_date', 'sim', 'product_type', 'failure_reason'
).values_list('id', flat=True)

这是我得到的错误:

django.core.exceptions.FieldError: Cannot resolve keyword 'created_date' into field

【问题讨论】:

    标签: django django-2.0


    【解决方案1】:

    我在 django 1.11 中遇到了同样的错误:

    qs = queryset.annotate(day=TruncDay('date')).distinct('day')
    ids = list(qs.values_list('id', flat=True))
    

    出现此错误的结果:

    FieldError: Cannot resolve keyword 'day' into field.
    

    这很奇怪,因为我尝试评估 'id'...

    我发现的唯一解决方法是:

    qs = queryset.annotate(day=TruncDay('date')).distinct('day')
    objects_list = list(qs)
    ids = [object.id for object in objects_list]
    

    这是非常低效的,但希望我的列表不会太长...

    【讨论】:

      猜你喜欢
      • 2020-07-27
      • 2014-06-08
      • 2020-04-30
      • 2011-12-19
      • 2018-07-24
      • 1970-01-01
      • 2011-03-29
      • 1970-01-01
      • 2021-03-28
      相关资源
      最近更新 更多