[英]Django - How does order_by work?
我想知道如果給定的order_by
字段的值對於一組記錄是相同的,Django的order_by
是如何工作的。 考慮我在DB中有一個score
字段,我使用order_by('score')
過濾查詢集。 具有相同分數值的記錄如何自行排列?
每次,他們都在具有相同分數的記錄子集中隨機排序,這打破了客戶端的分頁。 有沒有辦法覆蓋它並以一致的順序返回記錄?
我正在使用Django 1.4和PostgreSQL。
正如其他答案正確解釋的那樣, order_by()
接受多個參數。 我建議使用類似的東西:
qs.order_by('score','pk') #where qs is your queryset
我建議在這些情況下使用'pk'
(或'-pk'
)作為最后一個參數,因為每個模型都有一個pk
字段,並且它的值對於2個記錄永遠不會相同。
order_by
可以有多個參數,我認為order_by('score', '-create_time')
將始終返回相同的查詢集。
如果我理解正確的話,我想你需要持續有序的結果集,每次,你可以使用類似order_by('score','id')
是將第一級由得分第一,然后通過自動遞增id
的內score
具有相同的值,因此您的輸出是一致的。 文檔在這里 。 如果你想每次都獲取正確的結果集,你需要在order_by中明確,使用'id'是其中一種方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.