gpt4 book ai didi

python - 有没有办法在Django中使用order_by来指定返回结果的顺序?

转载 作者:行者123 更新时间:2023-12-03 16:57:33 25 4
gpt4 key购买 nike

到目前为止,我只看到 order_by 的升序和降序用法。我想要 order_by(Risk) 但结果以高、中、低顺序返回(这些是我在该领域的选项),而不是基于字母排序,order_by 是默认完成的方式。
以不同的方式解释它......我的模型中有一个名为“风险”的字段。风险在所有记录中只有 3 个值,高、中、低。当我在数据库上运行查询时,我希望它根据字段 Risk 按高、中、低的顺序对查询结果进行排序,而不是它现在返回记录的随机顺序。
当前代码如下所示:

    items = ScanData.objects.filter(Q(Owner__icontains="HooliCorp")).order_by(Risk)

最佳答案

一种解决方案是使用一些条件语句注释您的查询,该语句将根据字段值输出一个数字:

items = ScanData.objects.filter(
Q(Owner__icontains="HooliCorp")
).annotate(
risk_order=models.Case(
models.When(Risk='Low', then=1),
models.When(Risk='Med', then=2),
models.When(Risk='High', then=3),
output_field=models.IntegerField(),
),
).order_by('risk_order')
这将在结果列表上创建一个带有 1 到 3 数字的注释,具体取决于风险值,然后它将按此注释对查询进行排序。

关于python - 有没有办法在Django中使用order_by来指定返回结果的顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66803535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com