2015-12-10 37 views
0

有一个查询:Django的 - 无法解析关键字 'count_number' 到现场,当我使用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') 

已举起:

无法将关键字'like_count'解析为字段。选择有:....

有人知道吗?

PS,

Python版本:2.7.10

Django的版本:1.6.11

+0

它看起来像查询优化,更在这一点所以它的编序之前,下令..是它来升级你的Django的选项?它可能在更新的版本中解决 – Sayse

+0

@Sayse感谢您的回复。我相信它没有优化,我不能升级Django,它是现场直播。 –

回答

0

尝试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')]

相关问题