gpt4 book ai didi

django - Django ORM 中的替代 nullif

转载 作者:行者123 更新时间:2023-12-01 22:18:09 25 4
gpt4 key购买 nike

使用 Postgres 作为数据库和 Django 1.9

我有一些带有“价格”字段的模型。 “价格”空白=真。在 ListView 上,我得到了查询集。接下来,我想按价格排序,最后 price=0。

我如何用 SQL 编写它:'ORDER BY NULLIF('price', 0) NULLS LAST'

在Django ORM上怎么写?还是在 rawsql 上?

最佳答案

好的。我找到了替代方案。用 django func 编写自己的 NullIf。

from django.db.models import Func

class NullIf(Func):
template = 'NULLIF(%(expressions)s, 0)'

并将其用于查询集:

queryset.annotate(new_price=NullIf('price')).order_by('new_price')

编辑:Django 2.2 及更高版本已经实现了开箱即用。等效代码将是

from django.db.models.functions import NullIf
from django.db.models import Value
queryset.annotate(new_price=NullIf('price', Value(0)).order_by('new_price')

关于django - Django ORM 中的替代 nullif,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42601644/

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