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

Django2.0.1中__str__()方法显示Object而非self.text内容(Python3.5)

解决Django 2.0.1 + Python 3.5中模型__str__方法在Admin显示"Object"的问题

嘿,我之前在Django 2.x搭配Python 3.x开发时也碰到过一模一样的问题,别慌,咱们一步步排查解决:

  • 先检查__str__方法的拼写是否正确
    这是最常见的坑!一定要确保方法名是双下划线开头+str+双下划线结尾,也就是__str__,少写一个下划线都会导致Django调用默认的对象字符串表示,显示成"Object"。正确的写法应该是这样:

    class YourModel(models.Model):
        text = models.CharField(max_length=200)
        
        def __str__(self):
            return self.text
    
  • 确认模型已正确注册到Admin
    打开你的admin.py文件,检查是否已经把目标模型注册到后台管理系统里了,示例代码如下:

    from django.contrib import admin
    from .models import YourModel
    
    admin.site.register(YourModel)
    

    如果没注册,Admin显示的会是默认的模型名称,但如果注册后还是显示"Object",那大概率是__str__方法的问题。

  • 处理text字段为空的情况
    如果你的text字段设置了null=True或者blank=True,当某个模型实例的text字段为空时,__str__方法会返回空字符串,这时候Admin就会 fallback 显示"Object"。可以给__str__加个兜底逻辑:

    def __str__(self):
        # 如果text不为空就返回text,否则返回带主键的标识
        return self.text or f"{self._meta.verbose_name} Object #{self.pk}"
    
  • 重启Django开发服务器
    有时候修改了models.py的代码后,开发服务器没有自动重载(虽然通常会,但偶尔会出现缓存的情况),手动重启一下服务器,确保新的__str__方法生效。

按照上面的步骤排查,基本就能解决这个问题啦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:32:58