Django - 使用 values_list 时无法将关键字 'count_number' 解析为字段
Django - Cannot resolve keyword 'count_number' into field when I use values_list
有一个查询:
selected = MyModel.objects.filter(category_id=category_id,status__gte=0) \
.filter(pub_time__lte=_refresh_datetime,
buy_links__status=2) \
.annotate(like_count=Count('likes'))\
.order_by('-like_count')
它有效,但是,当我需要获取此查询的 ID 时:
selected_id_list = selected.values_list('id')
提出:
Cannot resolve keyword 'like_count' into field. Choices are: ....
有人知道吗?
ps,
Python版本:2.7.10
Django 版本:1.6.11
尝试values_list('id', 'like_count')
。我不太了解Django,但是注释的字段必须出现在 SELECT 表达式中。看起来 values_list('id')
,生成的查询变为 SELECT id FROM ...
,在这种情况下,SELECT 表达式中缺少 count(likes)
。
总之,selected_id_list = [r[0] for r in selected.values_list('id', 'like_count')]
有一个查询:
selected = MyModel.objects.filter(category_id=category_id,status__gte=0) \
.filter(pub_time__lte=_refresh_datetime,
buy_links__status=2) \
.annotate(like_count=Count('likes'))\
.order_by('-like_count')
它有效,但是,当我需要获取此查询的 ID 时:
selected_id_list = selected.values_list('id')
提出:
Cannot resolve keyword 'like_count' into field. Choices are: ....
有人知道吗?
ps,
Python版本:2.7.10
Django 版本:1.6.11
尝试values_list('id', 'like_count')
。我不太了解Django,但是注释的字段必须出现在 SELECT 表达式中。看起来 values_list('id')
,生成的查询变为 SELECT id FROM ...
,在这种情况下,SELECT 表达式中缺少 count(likes)
。
总之,selected_id_list = [r[0] for r in selected.values_list('id', 'like_count')]