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

Django后台添加Order时触发TypeError:__str__返回非字符串类型(Customer)

Django后台添加Order时触发TypeError:__str__返回非字符串类型(Customer)

嘿,我一眼就揪出问题所在啦!你遇到的这个错误,根源完全在Order模型的__str__方法里。

当你在Django admin后台操作订单时,系统会调用模型的__str__方法生成这个对象的可读标识,但你现在写的是:

def __str__(self):
    return self.customer

这里返回的self.customer是一个Customer模型的实例对象,而不是字符串类型,这就触发了TypeError——因为__str__方法要求必须返回字符串。

解决方法很简单,修改Order的__str__方法:

你可以返回客户的名称,或者结合订单的产品信息让显示更清晰,比如:

def __str__(self):
    # 考虑到customer可能为null的情况,做个兜底处理
    return self.customer.name if self.customer else "未关联客户"

或者更友好的写法,同时展示客户和产品信息:

def __str__(self):
    customer = self.customer.name if self.customer else "未知客户"
    product = self.product.name if self.product else "未知产品"
    return f"{customer} - {product}"

至于为什么教程里Dennis没遇到这个问题?大概率是他的Order模型__str__方法返回的是客户的名称(比如self.customer.name),而不是直接返回self.customer对象。你可以回去核对一下教程里的这段代码细节~

备注:内容来源于stack exchange,提问作者Berke Şen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.21 13:33:12