我有兩個型號,Track
和Pair
。每個Pair
具有track1
,track2
和popularity
。我試圖通過對的流行度(降序)得到一個有序列表,沒有兩個對具有相同的track1
。以下是我試過到目前爲止:Django:不同的外鍵,然後訂購
lstPairs = Pair.objects.order_by('-popularity','track1__id').distinct('track1__id')[:iNumPairs].values_list('track1__id', 'track2__id', 'popularity')
這給了我以下錯誤:
ProgrammingError: SELECT DISTINCT ON expressions must match initial ORDER BY expressions
...所以我嘗試這樣做:
lstPairs = Pair.objects.order_by('-popularity','track1__id').distinct('popularity', 'track1__id')[:iNumPairs].values_list('track1__id', 'track2__id', 'popularity')
這給了我用的條目重複track1__id
s。有誰知道解決這個問題的方法嗎?我猜我必須使用raw()
或類似的東西,但我不知道如何處理這樣的問題。我使用PostgreSQL作爲數據庫後端,因此應該支持DISTINCT
。
您可能必須使用raw。 – okaram 2014-09-03 15:21:23