如何在 Django 中编写 sql COALESCE

Kum*_*mar 1 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'
Run Code Online (Sandbox Code Playgroud)

模型.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)
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 5

您可以在此处使用Coalesce表达式 [Django-doc]Cast表达式 [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))
)
Run Code Online (Sandbox Code Playgroud)

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