簡體   English   中英

如何在 Django 查詢集中使用 order_by?

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

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