如何在django管理员索引中添加新条目?

时间:2012-01-23 16:43:40

标签: python django django-admin

我正在开发一个Django项目,我使用get_urls override method described in the documentation创建了一些自定义管理员视图。它完美地运作。只有一个问题。除非您已经知道URL,否则无法访问此自定义管理视图。

我已经知道在管理员的某个地方添加这个视图的链接有一些方法,但没有一个是令人满意的。我想要一个自定义视图的链接,以便与所有模型管理员一起出现在模型列表中。我只是不希望它旁边有+添加或+更改链接,因为它不是模型。

我可以覆盖admin_site或模板,但这不好。它将自定义放在项目级别而不是应用级别。它也只会将链接放在/ admin /页面而不是/ admin / myapp / page。

我还可以通过覆盖app_index.html模板轻松地将链接添加到其他位置,但这不是一个方便或直观的搜索位置。

我想出的另一个解决方案是创建一个空白模型并为其注册一个空白管理员。然后窃取该模型的url模式,因此单击其条目将转到我的自定义视图而不是空白的添加/更改视图。这是有效的,但这是一个令人难以置信的丑陋黑客。

这是我想要实现的目标的图片。

Customized Django Admin List

3 个答案:

答案 0 :(得分:2)

我仍然认为这样做的正确方法是覆盖django管理模板的某些部分。没有简单的方法来添加这些链接。

https://docs.djangoproject.com/en/dev/ref/contrib/admin/#overriding-vs-replacing-an-admin-template

我还发现这篇文章http://coffeeonthekeyboard.com/o-hai-django-adminplus-568/,这也表明django-adminplus是一个很好的工具。我个人更喜欢清除任何额外的依赖,并仍然使用模板 - 但这取决于你。

答案 1 :(得分:0)

您是否尝试过此应用:https://github.com/jsocol/django-adminplus?即使它不能用于你想要达到的确切目的,至少它可以通过检查代码给你一些启发

答案 2 :(得分:0)

您需要override the template admin/index.html。然后在{% endfor %} on line 40之后输出一对新标签。

您也可以使用jQuery解决它。