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

优化Django Admin时遇Block模型已注册错误,如何解决?

解决Django Admin模型重复注册的问题

这个错误很典型——你已经通过admin.site.register(Block)把Block模型注册过一次了,之后又尝试用自定义的BlockAdmin配置再次注册同一个模型,Django的Admin站点不允许重复注册同一个模型,所以抛出了AlreadyRegistered异常。

这里有两种靠谱的解决方法,根据你的实际情况选择:

方法一:直接移除重复的注册语句(推荐)

如果两次注册都是在你自己能修改的代码里,最简单的方式就是删掉第一次的admin.site.register(Block),只保留带自定义配置的注册代码。修改后的代码应该是这样:

from django.contrib import admin
from .models import Block

class BlockAdmin(admin.ModelAdmin):
    list_display = ('name', 'desc', 'admin')

# 只保留这一行注册语句
admin.site.register(Block, BlockAdmin)

这种方式最简洁,也不会有额外的判断逻辑,是优先推荐的方案。

方法二:先撤销已注册的模型,再重新注册

如果第一次的注册代码不在你的可控范围内(比如来自第三方app、其他模块的自动注册),那可以先检查模型是否已注册,若是则撤销注册,再重新注册带自定义配置的版本:

from django.contrib import admin
from .models import Block

# 先判断模型是否已注册,避免触发未注册的错误
if admin.site.is_registered(Block):
    admin.site.unregister(Block)

# 注册带自定义配置的模型
class BlockAdmin(admin.ModelAdmin):
    list_display = ('name', 'desc', 'admin')
admin.site.register(Block, BlockAdmin)

admin.site.unregister()方法可以移除已注册的模型,配合is_registered()的判断能确保代码不会因为模型未注册而报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 09:49:28