django - 如何在 Django 中编写 sql COALESCE

标签 django django-queryset

我是 Django 的新手。如何将 COALESCE sql 查询集写入 django orm。

query = 'SELECT COALESCE(max(CAST(order_no as UNSIGNED)), 0) as o,id from nanossc_Sales_master'

模型.py
class Sales_master(models.Model):
    slno = models.IntegerField(blank=True, null=True)
    order_no = models.CharField(max_length=50, blank=True, null=True)
    type = models.CharField(max_length=50, blank=True, null=True)
    customer_id = models.CharField(max_length=50, blank=True, null=True)
    customer_name = models.CharField(max_length=50, blank=True, null=True)
    brand_name = models.CharField(max_length=50, blank=True, null=True)
    name = models.CharField(max_length=50, blank=True, null=True)

最佳答案

您可以使用 Coalesce expression [Django-doc] Cast expression [Django-doc]这里:

from django.db.models import Max, PositiveIntergerField, Value
from django.db.models.functions import Cast, Coalesce

Sales_master.objects.aggregate(
    o=Coalesce(Max(Cast('order_no', output_field=PositiveIntergerField())), Value(0))
)

这将产生一个字典,其中一个键 'o'映射到此聚合的结果。

关于django - 如何在 Django 中编写 sql COALESCE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57444722/

相关文章:

django-autocomplete-light 过滤器查询集

python - Django:动态内联表单,根据用户选择进行过滤

python - 如何在当前服务器上没有安装 Oracle 的情况下连接 Django 中的远程 Oracle 数据库?

python - 为什么我会收到无效的 block 标签 : 'static' error?

sql - Django sql排序依据

django - 多个级别的 prefetch_related

python - 如何使通过多对多关系连接的模型在 Django 管理中同时在两个地方可编辑?

django - 你如何将 Django 的 SelectDateWidget 的顺序更改为日、月、年?

python - 在删除同一 QuerySet 中的对象时迭代 Django QuerySet

Django 按升序排序查询集