2015-12-10 39 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')]

相關問題