【发布时间】:2021-03-25 16:16:13
【问题描述】:
到目前为止,我只看到 order_by 的升序和降序用法。我想要 order_by(Risk) 但结果以高、中、低顺序返回(这些是我在该字段中的选项),而不是基于字母排序,order_by 默认完成的方式。
换一种方式来解释...我的模型中有一个名为“风险”的字段。风险在所有记录中只有 3 个值,高、中、低。当我在数据库上运行查询时,我希望它根据字段 Risk 按 High、Med、Low 的顺序对查询结果进行排序,而不是它现在返回记录的随机顺序。
当前代码如下所示:
items = ScanData.objects.filter(Q(Owner__icontains="HooliCorp")).order_by(Risk)
【问题讨论】:
-
我不清楚您的目标是什么。您能否分享相关模型并使用示例输入/输出来明确您的目标是什么?
-
保存 High/Med/Low 似乎效率低下,将这些值保存为易于排序的整数,并通过
choicesdocs.djangoproject.com/en/3.1/ref/models/fields/#choices 将 High/Med/Low 映射到整数跨度> -
@yedpodtrzitko - 我正在处理数千条记录,我上传到数据库的 .csv 文件以字符串 High/Med/Low 格式输出风险字段。我试图避免将其更改为基于数字的系统。
-
@errMSG 如果您正在处理“数千条记录”,您应该担心的问题不是在执行一次性 DB INSERT 时转换数据,而是在执行时您将拥有的性能每个 SELECT 上的非最佳查询。不过祝你好运。
标签: python django django-views