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

Django Admin面板报错:__str__返回非字符串(NoneType)原因排查

错误原因分析

这个TypeError的核心是某个模型的__str__方法返回了None而非字符串,结合你的场景和Notification模型代码,可能的原因分为两个方向:

1. Notification模型自身的__str__存在问题

Django Admin在展示模型实例时会自动调用__str__方法生成显示名称。如果你的Notification模型定义过类似下面的__str__(你提供的代码未包含这部分),就会触发错误:

def __str__(self):
    return self.text_preview  # 或返回self.remarks

因为text_preview和remarks都是允许为空的字段(blank=True),当id=5的通知实例中这两个字段都为空时,self.text_preview会返回None,直接返回就会导致__str__返回非字符串类型。

如果你的Notification模型完全没定义__str__,Django默认会返回类似<Notification object (5)>的字符串,一般不会触发这个错误,所以优先排查是否存在自定义的__str__方法。

2. 关联模型的__str__方法返回了None

你的Notification模型关联了多个外键(incident_report、incident_remarks、sender、user、responder),Admin加载编辑页面时会展示这些关联对象的名称,也就是调用它们的__str__方法。如果其中某个关联模型(比如IncidentGeneral、IncidentRemark或User)的__str__方法返回了None,编辑id=5的通知时就会触发报错。

比如假设IncidentGeneral的__str__是这样写的:

def __str__(self):
    return self.title  # 若该字段为None

当id=5的通知关联的incident_report实例中title为空时,调用__str__就会返回None,进而触发这个类型错误。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 07:30:39