在注释上使用distinct

时间:2018-01-04 06:36:56

标签: django django-2.0

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

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

1 个答案:

答案 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]

效率很低,但希望我的名单不会太长......