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机器学习之求解线性模型,文章围绕主题展开详细的内容介绍,具有一定参考价值,需要的小伙伴可以参考一下2022-08-08
对Keras中predict()方法和predict_classes()方法的区别说明
这篇文章主要介绍了对Keras中predict()方法和predict_classes()方法的区别说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧2020-06-06


最新评论