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

Django项目报错AttributeError: 'Type' object has no attribute '_state'求助

解决Django Admin中Category模型的AttributeError问题

看起来你遇到的这个错误根源很清晰——从报错信息里的'Type' object has no attribute '_state'可以推断,你在admin后台注册模型的时候误操作了,把Python内置的Type类型当成了你自己的Category模型来注册,导致Django无法正确识别模型实例。

问题分析

你的模型是Category,但错误里提到的是Type对象,这说明:

  • 你在blog/admin.py里可能导入错了模型,或者注册时写错了模型名称
  • Django尝试把非Django模型的Type类当作模型处理,而它没有Django模型必备的_state属性,因此触发了这个500错误

修复步骤

  1. 检查并修正admin注册代码
    打开你的blog/admin.py文件,确保代码是这样的:

    from django.contrib import admin
    from .models import Category  # 确认导入的是你的Category模型
    
    admin.site.register(Category)  # 注册的是Category,不是Type
    

    如果你之前写成了from .models import Type或者admin.site.register(Type),那就是问题所在——因为Type不是你定义的模型,而是Python的内置类型。

  2. 访问正确的Admin URL
    你的Category模型在Meta类里设置了verbose_name = 'category',所以正常的添加页面URL应该是:

    /admin/blog/category/add/
    

    你之前访问的/admin/blog/type/add/是错误的路径,修正后就能正常访问了。

  3. 确保模型已正确迁移
    最后别忘了运行迁移命令,确保数据库里有Category对应的表:

    python manage.py makemigrations
    python manage.py migrate
    

为什么会出现这个错误?

Django的模型实例都会有一个_state属性,用来跟踪实例的数据库状态(比如是否已保存、使用哪个数据库连接等)。而你注册的Type是Python的内置类型,根本不是Django的Model子类,自然没有这个属性,所以当Django尝试处理它时就会抛出AttributeError。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:15:01