如何处理Django DB Function Concat的NULL?

ccgok5k5  于 2023-08-08  发布在  Go
关注(0)|答案(1)|浏览(102)

我希望查询集返回地址的串联字符串。我现在写的代码是这样的:

queryset = Place.objects.annotate(
        place_address= Concat('address__city', Value(', '),'address__state__name'))
     )

字符串
当城市和州字段不为空时,它返回正常。但它不处理空值与此解决方案的结果可能结束:

"Kuala Lumpur, " OR ", Selangor" OR ", "


当前面的字段为空时,是否有方法跳过添加分隔符?- 谢谢-谢谢

3pvhb19x

3pvhb19x1#

你可以使用Django内置的Case-When条件。
链接到documentation

from django.db.models import Value, Case, When

queryset = Place.objects.annotate(
    place_address=Concat(
        'address__city',
        Case(
            When(
                address__city__isnull=True,
                then=Value('')
            ),
            When(
                address__state__name__isnull=True,
                then=Value('')
            ),
            default=Value(', ')
        ),
        'address__state__name'
    )
)

字符串

相关问题