最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Django自定義排序ORM示例詳解

 更新時(shí)間:2023年09月20日 11:12:10   作者:alue  
這篇文章主要為大家介紹了Django自定義排序ORM示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

Django 模型數(shù)據(jù)排序

在 Django 中,打算對(duì)模型數(shù)據(jù)排序,但排序的方式是需要自定義的。有三種方式

  • 將數(shù)據(jù)讀取到內(nèi)存之后,利用python自帶的排序方式進(jìn)行排序。
  • 利用 Case-When 技術(shù),讓數(shù)據(jù)庫(kù)來(lái)完成排序。

例如,模型如下

class ItemType(TextChoices):  
    A = '選擇題', '選擇題'  
    B = '填空題', '填空題'  
    C = '簡(jiǎn)單題', '簡(jiǎn)單題'  
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í),存入數(shù)據(jù)的值是有順序的,利用 choices 映射為顯示值。這種方式很直觀,效率更高,但缺點(diǎn)是需要多一次映射。

以上就是Django自定義排序ORM示例詳解的詳細(xì)內(nèi)容,更多關(guān)于Django自定義排序ORM的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

最新評(píng)論

五原县| 武威市| 定远县| 棋牌| 永川市| 都江堰市| 新丰县| 临夏市| 县级市| 廊坊市| 西安市| 栾城县| 鄂托克旗| 长治市| 上犹县| 浦北县| 蒲城县| 静海县| 稷山县| 东宁县| 商河县| 始兴县| 怀仁县| 伊金霍洛旗| 丹江口市| 雅江县| 察隅县| 双江| 卢龙县| 鹿邑县| 平舆县| 喀喇沁旗| 方山县| 津南区| 武穴市| 贵溪市| 龙游县| 嵊州市| 保德县| 襄城县| 大安市|