的子集或結果查詢集的隨機順序我有一個這樣的查詢:在Django
Listing.objects.all().order_by('-premium', 'title')
它像預期,返回所有高級班,然後再通過一切有序稱號。
現在我只需要隨機化premium
結果的順序。那可能嗎?
的子集或結果查詢集的隨機順序我有一個這樣的查詢:在Django
Listing.objects.all().order_by('-premium', 'title')
它像預期,返回所有高級班,然後再通過一切有序稱號。
現在我只需要隨機化premium
結果的順序。那可能嗎?
好的,我認爲在單個查詢中沒有解決方案。
所以,我已經解決了這個利用兩個查詢:
premium_results = Listing.objects.filter(premium=True).order_by('?')
normal_results = Listing.objects.filter(premium=False).order_by('title')
results = list(premium_results) + list(normal_results)
注:我需要一個列表作爲輸出,否則,你可以使用Django的Q
對象相結合的查詢結果。
您可以再次使用order_by
進行排序title
沒有premium
qs=Listing.objects.filter().order_by('-premium', 'title')
qs2 = qs.order_by('title') # will be sorted on 'title' not 'premium'
或快捷
Listing.objects.filter().order_by('-premium', 'title').order_by('title')
注:我使用filter()
代替all()
爲初始設置。
這樣,你在第二個'order_by'中按標題排序。我只需要隨機化優質結果,而不是其他。 –