![](/img/trans.png)
[英]How to avoid ordering by in django queryset, order_by() not working
[英]How to use order_by in Django queryset?
我將 order_by 應用於查詢集,結果混淆了。 如果我將它應用於查詢集有什么區別嗎?
該表包含三列: 名稱 年齡 描述 這是代碼:
Query = table1.objects.filter(Name__iexact='Nico').order_by('Age').distinct()
ages = Query.values_list('Age')
descr= Query.values_list('Description')
這里只有 Age 被正確排序。 這些年齡和描述之間的匹配被扭曲了。 這里有什么問題?
怎么了 ? 嗯,實際上,設計本身。 “並行列表” - 兩個列表(或類似類型)在位置上匹配 - 是一種反模式。 它體積龐大,難以使用(您必須跟蹤索引並為兩個列表添加下標),而且很脆弱(如果出於某種原因更改了其中一個列表,則數據不再匹配)。
如果您需要保持兩個信息匹配,請將它們作為元組(此處為query.values_list("Age", "Description")
)或字典(此處為query.values("Age", "Description"))
。 這將使您的代碼更簡單、更安全。
注意:我當然假設您想匹配這兩個查詢集,因為您提到“這些年齡和描述之間的匹配被扭曲了”。
嘗試在distinct之后將您的order_by
放在最后。
要么嘗試
Query = table1.objects.filter(Name__iexact='Nico').distinct()
Query = Query.order_by('Age')
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.