Django自定义排序ORM示例详解

 更新时间:2023年09月20日 11:12:10   作者:alue  
这篇文章主要为大家介绍了Django自定义排序ORM示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

Django 模型数据排序

在 Django 中,打算对模型数据排序,但排序的方式是需要自定义的。有三种方式

  • 将数据读取到内存之后,利用python自带的排序方式进行排序。
  • 利用 Case-When 技术,让数据库来完成排序。

例如,模型如下

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 时,存入数据的值是有顺序的,利用 choices 映射为显示值。这种方式很直观,效率更高,但缺点是需要多一次映射。

以上就是Django自定义排序ORM示例详解的详细内容,更多关于Django自定义排序ORM的资料请关注脚本之家其它相关文章!

相关文章

  • Python PaddlePaddle机器学习之求解线性模型

    Python PaddlePaddle机器学习之求解线性模型

    这篇文章主要介绍了Python PaddlePaddle机器学习之求解线性模型,文章围绕主题展开详细的内容介绍,具有一定参考价值,需要的小伙伴可以参考一下
    2022-08-08
  • 对Keras中predict()方法和predict_classes()方法的区别说明

    对Keras中predict()方法和predict_classes()方法的区别说明

    这篇文章主要介绍了对Keras中predict()方法和predict_classes()方法的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-06-06
  • Python常用配置文件ini、json、yaml读写总结

    Python常用配置文件ini、json、yaml读写总结

    用的配置文件格式有ini、json、yaml等,下面简单给大家介绍下,Python如何读写这几种格式的文件,对Python读写ini、json、yaml配置文件相关知识感兴趣的朋友一起看看吧
    2021-07-07
  • 一文详解Python中生成器的原理与使用

    一文详解Python中生成器的原理与使用

    生成器表达式本质上就是一个迭代器,是定义迭代器的一种方式,是允许自定义逻辑的迭代器。本文将详细讲解一下Python中生成器的原理与使用,需要的可以参考一下
    2022-05-05
  • 使用Python制作一个翻译器

    使用Python制作一个翻译器

    这篇文章主要为大家详细介绍了如何使用Python实现一个中英翻译器,输入中文或者英文,输出对应的英文或者中文,有需要的小伙伴可以参考一下
    2025-02-02
  • python解析xml模块封装代码

    python解析xml模块封装代码

    这篇文章主要分享下在python中解析xml文件的模块用法,以及对模块封装的方法,有需要的朋友参考下
    2014-02-02
  • python用pyecharts实现地图数据可视化

    python用pyecharts实现地图数据可视化

    这篇文章主要介绍了python用pyecharts实现地图数据可视化,帮助大家更好的理解和学习使用python,感兴趣的朋友可以了解下
    2021-03-03
  • python numpy数组复制使用实例解析

    python numpy数组复制使用实例解析

    这篇文章主要介绍了python numpy数组复制使用实例解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-01-01
  • 使用Python 统计文件夹内所有pdf页数的小工具

    使用Python 统计文件夹内所有pdf页数的小工具

    这篇文章主要介绍了Python 统计文件夹内所有pdf页数的小工具,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2021-03-03
  • Python数据可视化实现多种图例代码详解

    Python数据可视化实现多种图例代码详解

    这篇文章主要介绍了Python数据可视化实现多种图例代码详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-07-07

最新评论