关于扩展 django 管理模板的一个(不是那么)快速的问题。
我试图通过在包含与该对象相关的一些对象的结果行(row1 和 row2 类)之间添加一个中间行来更改特定模型的结果列表(django lingo 中的更改列表)。
我搜索了代码,但没有找到一种方法来做到这一点。非常感谢任何指针。代码也会有所帮助。
PS:我知道我应该设计自己的界面,但这是一个内部项目,我没有那么多空闲时间。此外,django 界面非常好。
先感谢您。
最佳答案
为了扩展 Yuji 的答案,这里有一些关于覆盖 change_list_results.html
的细节...
覆盖 changelist_view
如上面步骤 1 中所述,并且还描述了 here at djangoproject . 或 通过放置在上述步骤 2 中的相应目录中来自动覆盖。 (请注意,上面显示的第 2 步路径是特定于模型的。特定于应用程序的将是 /admin/<MyAppName>/change_list.html
在 TEMPLATE_DIRS 元组中定义的任何目录下。)
或 (也许更简单)只需指定 ModelAdmin.change_list_template
如解释 here任何可发现的模板文件名。 (不过,如果保留名称 change_list.html
,请务必不要直接存入 /admin
文件夹,否则 extends
标签会导致递归。)
class MyModelAdmin(admin.ModelAdmin):
change_list_template = 'change_list.html' # definitely not 'admin/change_list.html'
# ...
在您的
change_list.html
模板,至少有{% extends "admin/change_list.html" %}
{% load i18n admin_static admin_list %}
{% load myapptags %}
{% block result_list %}
{% if action_form and actions_on_top and cl.full_result_count %}{% admin_actions %}{% endif %}
{% result_list cl %}
{% if action_form and actions_on_bottom and cl.full_result_count %}{% admin_actions %}{% endif %}
{% endblock %}
创建
/<MyAppName>/templatetags
包(包含 __init__.py
的目录),文件对应于上面的加载标签# MyAppName/templatetags/myapptags.py
from django import template
from django.contrib.admin.templatetags.admin_list import result_list
register = template.Library()
register.inclusion_tag('my_change_list_results.html')(result_list)
复制和编辑 Django 的
change_list_results.html
(例如上面的 my_change_list_results.html
)来使用您添加的功能。请注意,这些步骤不包括模板的额外上下文,但可以轻松扩展。 (我这样做的原因是为 CSS 添加类和一个未按结果列表排序的前导
<tbody>
。)附加 :
要包含额外的上下文,请按如下方式更改您的模板标签模块:
# MyAppName/templatetags/myapptags.py
from django import template
from django.contrib.admin.templatetags.admin_list import result_list as admin_list_result_list
def result_list(cl):
mycl = {'myextracontext': 'something extra'}
mycl.update(foo_extra())
mycl.update(admin_list_result_list(cl))
return mycl
register = template.Library()
register.inclusion_tag('my_change_list_results.html')(result_list)
那么,
myextracontext
的值或任何foo_extra
返回可以包含在您的结果模板中(例如 {{ myextracontext }}
)
关于django - 扩展 Django 管理模板 - 更改更改列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4794528/