gpt4 book ai didi

在 Coalesce 语句中,Django 空字符 ('' ) 到 null (NULL)

转载 作者:行者123 更新时间:2023-12-03 18:33:39 31 4
gpt4 key购买 nike

我有以下要执行的查询:

MyModel.objects.annotate(current_name=Coalesce('nickname', 'name')).order_by('current_name') 

这很失败,因为昵称在为空时不是 NULL,但它是一个空字符(正如 Django 社区中的约定)。

因此,我想做一些类似的事情:
MyModel.objects.annotate(if empty char: make null, then do coalesce like above). Is this possible?

最佳答案

使用 Conditional expressions ,这是 Django 1.8 中的新功能。

from django.db.models import CharField, Case, When
from django.db.models.functions import Coalesce

MyModel.objects.annotate(
current_name=Coalesce(
Case(
When(nickname__exact='', then=None),
When(nickname__isnull=False, then='nickname'),
default=None,
output_field=CharField()
),
Case(
When(name__exact='', then=None),
When(name__isnull=False, then='name'),
default=None,
output_field=CharField()
))).order_by('current_name')

关于在 Coalesce 语句中,Django 空字符 ('' ) 到 null (NULL),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35008318/

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