Django 1.5扩展了admin/change_form.html对象工具

war*_*eed 2 python django recursion django-templates django-admin

我是Django的新手,但我一直很喜欢它.但偶尔我似乎遇到了一些我似乎没有把事情弄清楚的地方.所以,我要求一些帮助和指导.

我正在尝试为我的一个模型扩展对象工具,这样我就可以在History旁边有一个Print按钮.

我的模板如下:

project/app/templates/admin/
Run Code Online (Sandbox Code Playgroud)

成功地扩展了base_site.html而没有任何问题.

project/app/templates/admin/base_site.html
Run Code Online (Sandbox Code Playgroud)

但是,当我像这样添加change_form.html时:

project/app/templates/admin/change_form.html
Run Code Online (Sandbox Code Playgroud)

具有以下内容:

{% extends 'admin/change_form.html' %}

{% block object-tools %}
    <a href="one">One</a>
    <a href="one">Two</a>
{% endblock %}
Run Code Online (Sandbox Code Playgroud)

我得到一个例外:调用Python对象时超出了最大递归深度

这似乎我错过了一些非常基本的东西.

我试过的事情:

  • {%block%}的许多变体
  • 扩展base_site,base等...
  • 添加/ model作为路径的一部分(project/app/templates/admin/model/change_form.html)

我很困惑,也没有成功.

PS:我也在这里使用bootstrap主题http://riccardo.forina.me/bootstrap-your-django-admin-in-3-minutes/但是出于这个问题的目的,我目前还没有使用它.

Pet*_*per 5

问题是admin/change_form.html你的{% extend %}块被解析为project/app/templates/admin/change_form.html.

一种解决方案是templates为您的应用创建一个名为的子目录- 可能project/templates/admin/app/change_form.html.

要覆盖其中的一个或多个,首先在项目的templates目录中创建一个admin目录.这可以是您在TEMPLATE_DIRS中指定的任何目录.

在此管理目录中,创建以您的应用程序命名的子目录.

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