You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django对象中注解字符串 拼接姓名字段返回0值该如何解决

错误原因

你直接使用+运算符拼接F()引用的字符串字段时,Django会默认将该运算识别为数值加法而非字符串拼接,字符串转数值失败时就会返回0,这就是你查询得到full_name值为0的原因。

正确实现方式

你需要使用Django内置的Concat函数完成字符串拼接操作,步骤如下:

  • 首先导入需要的工具类:
from django.db.models import Value
from django.db.models.functions import Concat
  • 修改查询语句,用Concat拼接字段,注意两个姓名中间需要插入空格:
Customer.objects.annotate(
    full_name=Concat('first_name', Value(' '), 'last_name')
).filter(full_name='Filan Fisteku')

如果部分场景下字段可能为空,也可以手动指定输出字段类型避免异常:

from django.db.models import CharField

Customer.objects.annotate(
    full_name=Concat(
        'first_name', Value(' '), 'last_name',
        output_field=CharField()
    )
).filter(full_name='Filan Fisteku')

内容的提问来源于stack exchange,提问作者maca

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 18:27:02