加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Python > 正文

python – 如何在django admin change_list模板中获取对象

发布时间:2020-12-20 12:22:08 所属栏目:Python 来源:网络整理
导读:我想覆盖 django admin change_list页面,但我无法找到如何获取实际对象,以便我可以访问像object.name这样的属性 在模板中,他们有这个代码 tr {%for result in item%} {{item}} {%endfor%} / tr 我可以使用的实际对象在哪里 编辑: 看起来结果是行,而item
我想覆盖 django admin change_list页面,但我无法找到如何获取实际对象,以便我可以访问像object.name这样的属性

在模板中,他们有这个代码

< tr> {%for result in item%} {{item}} {%endfor%}< / tr>

我可以使用的实际对象在哪里

编辑:

看起来结果是行,而item是列.我想要像result.pk这样的东西

如果结果,这将产生列表

https://github.com/django/django/blob/master/django/contrib/admin/templatetags/admin_list.py#L175

解决方法

提供给change_list.html的上下文包括对应于contrib.admin.views.main.ChangeList对象的cl条目,该对象是包含结果列表的对象.

您可以像这样直接访问结果列表:

{% for object in cl.result_list %}
{{ object.field }}
{% endfor %}

通过使用result_list模板标记,更改列表结果将作为change_list_results.html模板的一部分呈现. change_list_results.html模板在呈现模板时也具有cl上下文变量.

当Django模板在您的示例中迭代结果时,result是一个ResultList对象,其中包含预呈现的html,正在呈现的基础对象不可用.

要覆盖此级别的模板,您可能需要实现自己的result_list类型模板标记,该标记可以返回结果列表,其中基础对象作为属性附加到每个结果.

简而言之,您可能需要:

>根据Django的实现创建自己的result_list模板标记.让它返回结果上下文作为ResultList预呈现html的列表,让它返回包含能够呈现为html的对象的结果,以及附加原始底层对象的每个项目以供稍后在模板中使用.
>覆盖change_list.html模板以使用新标记而不是Django的result_list模板标记.
>覆盖change_list_results.html模板以利用模板标记中可用的额外信息,例如每个基础对象的存在.

正如您可能已经收集的那样,管理员应用程序通过各层紧密集成.更改其操作非常重要,需要更改和覆盖源的多个部分.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读