Django自定義排序ORM示例詳解
更新時間:2023年09月20日 11:12:10 作者:alue
這篇文章主要為大家介紹了Django自定義排序ORM示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
Django 模型數(shù)據(jù)排序
在 Django 中,打算對模型數(shù)據(jù)排序,但排序的方式是需要自定義的。有三種方式
- 將數(shù)據(jù)讀取到內(nèi)存之后,利用python自帶的排序方式進行排序。
- 利用 Case-When 技術(shù),讓數(shù)據(jù)庫來完成排序。
例如,模型如下
class ItemType(TextChoices): A = '選擇題', '選擇題' B = '填空題', '填空題' C = '簡單題', '簡單題' class Item(models.Model): type = models.CharField(choices=options.ItemType.choices)
可以這樣定義排序映射:
from django.db.models import Case, Value, When type_order = Case( When(type=ItemType.A, then=Value(0)), When(type=ItemType.B, then=Value(1)), When(type=ItemType.C, then=Value(2)), ) Item.objects.alias(type_order=type_order).order_by(type_order)
這種方式,要比第一種方式更加高效。
- 定義 choices 時,存入數(shù)據(jù)的值是有順序的,利用 choices 映射為顯示值。這種方式很直觀,效率更高,但缺點是需要多一次映射。
以上就是Django自定義排序ORM示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Django自定義排序ORM的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
Python 中的參數(shù)傳遞、返回值、淺拷貝、深拷貝
這篇文章主要介紹了Python 中的參數(shù)傳遞、返回值、淺拷貝、深拷貝,非常不錯,具有一定的參考借鑒價值,需要的朋友可以參考下2019-06-06python鏈接sqlite數(shù)據(jù)庫的詳細(xì)代碼實例
SQLite數(shù)據(jù)庫是一款非常小巧的嵌入式開源數(shù)據(jù)庫軟件,也就是說沒有獨立的維護進程,所有的維護都來自于程序本身,它是遵守ACID的關(guān)聯(lián)式數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低2021-09-09淺談python中copy和deepcopy中的區(qū)別
Python學(xué)習(xí)過程中會遇到許多問題,最近對copy和deepcopy略感困惑,下面對其進行解答,需要的朋友可以參考。2017-10-10Python使用Turtle圖形函數(shù)畫圖顏色填充實例
這篇文章主要介紹了Python使用Turtle圖形函數(shù)畫圖顏色填充實例,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-08-08淺談keras的深度模型訓(xùn)練過程及結(jié)果記錄方式
今天小編就為大家分享一篇淺談keras的深度模型訓(xùn)練過程及結(jié)果記錄方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01