django - Django 查询集自定义顺序
问题描述
我想做一个查询集,它首先按标题排序,然后按大小排序,但大小应该是自定义排序的,就像列表中的顺序一样。例如
order_size_ist = ['S', 'M', 'L', 'XL', 'XXL' ]
queryset = RawMaterial.objects.order_by('title', 'size')
尺寸应先订购 S,然后订购 M,然后订购 L,依此类推。有任何想法吗 ?先感谢您 :)
解决方案
您可以使用Case
-When
序列将大小映射到整数,然后按这些整数排序:
from django.db.models import Case, Value, When
RawMaterial.objects.order_by(
'title',
Case(
*[When(size__iexact=siz, then=Value(i))
for i, siz in enumerate(order_size_ist)],
default=None
).asc()
)
推荐阅读
- regex - 使用 perl 搜索字符串并将搜索到的字符串保存在数组中
- python - Python中绘图命令的尺寸错误
- c# - Unity Web 请求:请启用 JavaScript 以访问该网站
- python - 如何在 PyCharm 中设置 PYTHONHASHSEED 环境变量以测试 Word2Vec 模型?
- python-3.x - 如何在python中获取登录状态的url insetad
- swift - GKLeaderboard 只显示来自朋友的数据,并且每隔几个小时重置一次
- terraform - 在 local-exec-terraform 中调用 shell 脚本
- c - 为什么会出现 mpicc 安装错误?
- java - 我应该在 GKE 引擎上部署 api-gateway 吗?
- c++ - 带有 GPU-Accel 的 FFMPEG:将 AVFrame 直接映射到 OpenGL-Texture