栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Django(1.10)覆盖AdminSite

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Django(1.10)覆盖AdminSite

我没有找到解决问题的方法,但是我已经找到了解决方法。

首先,我们需要在应用程序中创建模块(例如admin.py),然后扩展AdminSite类:

from django.contrib.admin import AdminSiteclass MyAdminSite(AdminSite):    ...

然后,在模块底部,我们需要创建MyAdminSite的实例并从Django注册内置模型:

site = MyAdminSite()site.register(Group, GroupAdmin)site.register(User, UserAdmin)

必要进口:

from django.contrib.auth.models import Group, Userfrom django.contrib.auth.admin import GroupAdmin, UserAdmin

在我们的网站网址模块中,我们需要覆盖原始网站对象:

from .admin import siteadmin.site = siteadmin.autodiscover()...url(r'^admin/', admin.site.urls)...

我们需要做的最后更改是注册我们的模型。我们需要记住的一件事是,我们不能像这样使用register作为装饰器:

@admin.register(MyModel)class MyModelAdmin(admin.ModelAdmin):    ...

要么:

@admin.site.register(MyModel)class MyModelAdmin(admin.ModelAdmin):    ...

我们需要定义我们的ModelAdmin类,然后在MyAdminSite对象上调用register:

class MyModelAdmin(admin.ModelAdmin):    ...admin.site.register(MyModel, MyModelAdmin)

这是唯一对我有用的解决方案。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/514577.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号