簡體   English   中英

Django - order_by如何工作?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM