【发布时间】:2011-08-06 12:41:13
【问题描述】:
先介绍一点背景:
我有一个Event 模型,它有各种event_types。我想将其中一种事件类型“电影”分解为它自己的管理员。我有一个基本功能:继承自 Event 的代理模型,命名为 Film,该代理模型的自定义管理器将其过滤为仅“电影”事件类型,它是自己的 ModelAdmin。
问题是反过来的。我现在需要从主 Event 管理员中过滤掉电影。我不想更改Event 模型或其默认管理器,因为影响太广泛了。因此,我尝试创建另一个代理模型EventAdminProxy,其唯一目的是在管理员中提供过滤的事件列表。然后我用现有的 ModelAdmin 注册这个模型,而不是 Event。
这显然有效,但它有一个不幸的副作用,即在管理员中更改 URL。变更列表不再位于“/admin/event/event/”,而是位于“/admin/event/eventadminproxy/”。
我要做的是保留此设置,但也要保留旧 URL。我尝试重载 ModelAdmin 的 get_urls 方法,但据我所知,您无法控制那里的完整 URL,只能控制“/app_label/model_class/”部分之后的内容。
我曾考虑在主 urls.py 中覆盖它,但无法找到一个可接受的视图来绑定。实际视图仅在实例化的 ModelAdmin 对象上可用,而不是类本身。
关于如何覆盖管理员中使用的 URL 的任何想法?
【问题讨论】:
标签: django url django-admin django-urls