如何解决什么是启用/禁用站点范围管理员功能的最佳实践/最佳位置
情况:我有一个包含多个应用程序的Django项目,每个应用程序都有一个或多个模型。我为某些模型添加了自定义admin actions,并免费获得了“删除所选内容”操作。我想对所有应用程序中的所有模型禁用此功能。
我知道如何为整个项目disable the "Delete selected"采取行动,即使用
admin.site.disable_action('delete_selected')
但是我根本不知道该放在哪里。我已经将其放在一个应用程序的admin.py
文件中,并且绝对可以正常工作,但是这使我感到烦恼,因为(我认为)整个站点范围的更改也会影响其他应用程序,这不应该由管理员引起单个应用程序的配置。我希望找到某种方法来拥有“项目级” admin.py
文件,但是似乎只有fully customizing the AdminSite可以解决问题,如果我只想禁用它,我认为这有点过头了。全局“ delete_selected”操作。
有什么想法吗?
解决方法
这完全取决于您,但是在已经导入了必要模块的地方这样做很有意义。
很可能您可以在项目urls.py
中进行此操作,并以我的一个为例;
from django.contrib import admin
from django.urls import re_path,path,include
from django.views.decorators.cache import cache_page
from django.views.i18n import JavaScriptCatalog
try:
admin.site.disable_action('delete_selected')
except KeyError:
pass
urlpatterns = [
path(
'jsi18n/',cache_page(60 * 60,cache='pages')(
JavaScriptCatalog.as_view()
),name='javascript-catalog'
),path(
'admin/',admin.site.urls
)
]
我将其包装在try/except
中,因为在测试时看到了KeyError
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。