3
(請讓我知道這是完全荒謬的,這也許就是爲什麼我還沒有發現任何關於此的一個原因。)有沒有辦法讓查詢尊重輸入參數的順序?
這個故事有兩種型號Ranking
和Artist
,Ranking
是一般涉及到Artist
(object_id,content_type ...整個shebang)。
我有一個由Ranking.objects.values_list()
返回的對象返回的對象列表(我的例子是score
)。很顯然,如果我想顯示已排名的藝術家列表,我希望他們的順序相同。我已經嘗試了不同的方法,例如.filter(pk__in=list)
,.in_bulk(list)
等。試圖強制.values_list()
的結果也成爲一個元組。
他們都拿我的列表:
>>> objects = Ranking.objects.filter(<stuff>).order_by('score')
>>> objects_list = objects.values_list('object_id', flat=True)
>>> objects_list
[8, 1, 2, 15, 14, 3, 13, 31, 16, 5, 4, 7, 32, 9, 37]
而像那麼回事吧:
>>> Artist.objects.filter(id__in=objects_list).values_list('id', flat=True)
[7, 32, 3, 8, 4, 2, 31, 9, 37, 13, 16, 1, 5, 15, 14]
(我只是給在第二種情況下的ID爲理智的緣故。)
現在,我可以完成這項工作的唯一方法是創建一個空列表,並通過非values_list()
查詢進行循環。
for item in objects:
ranked_items.append(item.content_object)
這只是產生n
查詢,所以我想知道是否有更好的方法。如標籤所示,我使用的是PostgreSQL。
謝謝,我想我的問題必須是PostgreSQL支持。 – 2010-02-12 23:28:38