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

如何实现Django Admin仅在DEBUG模式下显示全部模型,非DEBUG仅展示指定单个模型

实现方案

执行位置选择

逻辑直接放在项目根目录的urls.py文件中即可,Django加载路由的时机晚于所有应用admin.py的模型注册逻辑,完全满足你要等所有注册完成后再执行的要求。

具体实现代码

# 项目根urls.py
from django.conf import settings
from django.contrib import admin
from your_app.models import Model1 # 替换为你要保留的模型实际导入路径

# 原有路由配置保持不变
urlpatterns = [
    path("admin/", admin.site.urls),
    # 其余原有路由
]

# 新增DEBUG判断逻辑
if not settings.DEBUG:
    # 遍历所有已注册的模型
    for model in list(admin.site._registry.keys()):
        # 跳过指定要保留的Model1
        if model._meta.label == Model1._meta.label:
            continue
        # 卸载其余所有模型
        admin.site.unregister(model)

你之前设想的直接清空_registry再重新注册的方法也可以运行,但_registry是AdminSite的私有属性,不同Django版本可能调整内部实现,优先推荐用官方公开的unregister方法,兼容性更好。

验证方式

分别把settings.py中的DEBUG改为True和False,登录admin后台查看左侧菜单即可验证效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 19:27:00