gpt4 book ai didi

python - 我如何在 Django 中实现合并查询?

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

我正在尝试使用 django 和 djngo rest 框架构建一个电子商务网站。我的模型项目包含 price 和 sale_price 列:

class Item(models.Model):
price = models.FloatField()
sale_price = models.FloatField(null=True,blank=True)

我想按最高活跃价格过滤它们所以为了在 sqlite 中做到这一点,我会写一些类似的东西

SELECT * FROM item WHERE coalesce(sale_price,price) < maxPrice;

我如何在 Django 中执行此操作?

最佳答案

Django 有一个 Coalesce [Django-doc]功能。因此,您可以过滤例如:

from django.db.models.functions import <b>Coalesce</b>

Item.objects.annotate(
real_price=<b>Coalesce(</b>'sale_price', 'price'<b>)</b>
).filter(
real_price__lt=<i>maxPrice</i>
)

或者如果你想要两者中最大的一个,最好使用:

from django.db.models.functions import <b>Coalesce</b>

Item.objects.annotate(
real_price=<b>Greatest(</b>Coalesce('sale_price', 'price'), 'price'<b>)</b>
).filter(
real_price__lt=<i>maxPrice</i>
)

NULL 在最大表达式中的处理方式因数据库而异。例如,当参数之一为 NULL 时,SQLite 将返回 NULL

关于python - 我如何在 Django 中实现合并查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62573079/

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