覆盖特定模型的Django Admin URL?
|
首先一点背景:
我有一个带有各种
event_type
的Event
模型。我想将其中一种事件类型“电影”细分为自己的管理员。我具有基本的功能:从ѭ0inherit继承的代理模型,名为Film
,该代理模型的自定义管理器,仅将其过滤为“电影”事件类型,并拥有自己的ModelAdmin。
问题出在反向。现在,我需要从主Event
管理员中过滤掉电影。我不想更改“ 0”模型或其默认管理器,因为影响可能过于广泛。因此,我尝试创建另一个代理模型ѭ6,其唯一目的是在管理员中提供事件的过滤列表。然后,我用现有的ModelAdmin注册该模型,而不是ѭ0。
这显然是可行的,但是它具有在管理员中更改URL的不幸副作用。现在,更改列表不再位于\“ / admin / event / event / \”,而是位于\“ / admin / event / eventadminproxy / \”。
我想做的是保留此设置,同时保留旧的URL。我曾尝试重载ModelAdmin的get_urls
方法,但据我所知,您无法控制其中的完整URL,只能控制\“ / app_label / model_class / \”部分之后的内容。
我曾考虑过在主urls.py中覆盖它,但无法找出可以接受的视图。实际视图仅在实例化的ModelAdmin对象上可用,而在类本身上不可用。
关于如何覆盖管理员使用的URL的任何想法?
没有找到相关结果
已邀请:
3 个回复
桔马牛
的queryset方法并过滤查询集,以便排除电影事件。 类似于以下内容:
抵舵
实例中两个位置构建。 要更改的部分内置于AdminSite实例(
)中,您可以将其子类化并覆盖
方法。如果您看一下方法的后半部分,将会看到以下内容:
在那里,它添加了模型的._meta.module_name,而模型名只是小写(
)。 一种简单的解决方法是覆盖Site的
方法,并为代理模型添加字典或特殊情况,以便它使用不同的url代替
,如下所示: 类MyAdminSite(AdminSite):
吞睫素
子类化并覆盖
方法以自定义更改网址(从其他答案中了解),例如:
该问题的适应示例: