Django报错'NoneType' object is not callable,Admin注册Post类问题求解决
问题根因定位
你遇到的'NoneType' object is not callable报错核心原因是Django Admin模型注册装饰器用法错误:
- Django提供的类装饰器是
@admin.register(模型类),你错误写成了@admin.site.register(Post) admin.site.register()本身是直接执行注册的普通函数,调用后返回值为None,将返回值作为装饰器使用时,就会触发None对象不可调用的类型错误。
两种修复方案
方案1:使用正确的装饰器写法
from django.contrib import admin from .models import Post # 确保提前导入你的Post模型 @admin.register(Post) class PostAdmin(admin.ModelAdmin): list_display = ('title', 'slug', 'author', 'publish', 'status') list_filter = ('status', 'created', 'publish', 'author')
方案2:使用函数式注册写法
如果你不想用装饰器,也可以用传统的注册函数完成绑定:
from django.contrib import admin from .models import Post # 确保提前导入你的Post模型 class PostAdmin(admin.ModelAdmin): list_display = ('title', 'slug', 'author', 'publish', 'status') list_filter = ('status', 'created', 'publish', 'author') # 手动传入模型类和对应的管理类完成注册 admin.site.register(Post, PostAdmin)
额外排查点
如果修改后还有报错,可以检查以下项:
- 确认
Post模型已经提前导入,没有拼写错误 - 确认
list_display、list_filter中配置的字段名,和Post模型中定义的字段名完全一致,没有拼写错误 - 确认当前
admin.py文件所在的App,已经在项目settings.py的INSTALLED_APPS中完成注册
内容的提问来源于stack exchange,提问作者Sihle Bavu
相关产品推荐
相关产品推荐

