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

Django admin添加Doctor时报__str__返回NoneType错误如何解决

报错根因

你遇到的__str__ returned non-string (type NoneType)错误,本质是模型的__str__方法返回了空值(None),触发场景有两个:

  • myCustomUser模型的firstName字段允许为null,当关联的用户没有填写firstName时,__str__直接返回self.firstName就是None
  • Doctor模型的__str__直接调用self.user.firstName,如果创建Doctor时没有关联用户,或者关联的用户firstName为空,都会返回空值
修复方案

1. 调整myCustomUser的__str__方法

新增兜底逻辑,优先返回姓名,姓名为空时返回必填且唯一的username:

def __str__(self):
    return self.firstName if self.firstName else self.username

2. 调整Doctor的__str__方法

新增多层判断,避免空值返回:

def __str__(self):
    # 先判断是否关联了用户
    if self.user:
        # 关联用户的情况下优先返回姓名,姓名为空返回用户名
        return self.user.firstName if self.user.firstName else self.user.username
    # 未关联用户时返回默认字符串
    return "未关联用户的医生记录"

注意:修改模型方法不需要执行数据库迁移操作,调整完成后直接重启Django服务即可生效。

可选优化(非必填)

你自定义的myCustomUser继承了Django自带的AbstractUser,AbstractUser本身已经内置了username、password、first_name、last_name、email等字段,你代码里重复定义了同名字段(驼峰和下划线的区别),属于冗余定义,可以删除重复字段减少不必要的存储开销。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.24 06:27:02