在 django 管理更改列表页面上的每条记录上添加按钮?
Posted
技术标签:
【中文标题】在 django 管理更改列表页面上的每条记录上添加按钮?【英文标题】:Add button against each record on django admin change list page? 【发布时间】:2018-07-19 06:04:47 【问题描述】:我想在 django 管理员更改列表页面上的每一行添加一个按钮。单击该按钮时,我想在某个数据库表中输入条目(所有这些都发生在后端),然后应在同一页面上针对该行禁用该按钮。
我怎样才能做到这一点?我已经搜索了很多按钮没有可用的解决方案。
【问题讨论】:
【参考方案1】:您将不得不在生成结果项的位置(靠近底部)编辑changelist_result_list
模板,以添加一个引发请求的元素。例如:
<tr class="% cycle 'row1' 'row2' %">
% for item in result %
item
<!-- NEW STUFF --->
% if forloop.last %
<td>% if pk %<a href="do_things_with_object_pk">CLICK ME</a>% endif %</td>
% endif%
% endfor %
</tr>
(不要忘记进一步更新表格标题)
您将不得不通过混淆django.contrib.admin.template_tags.admin_list
中的模板标签result_list
来为pk
提供模板上下文变量——这意味着您正在为此创建your own templatetag。
然后你需要设置一个视图和一个 url conf 来处理链接发送的请求。
假设您在foo/bar
,然后单击pk=2
所在行的链接。将为 foo/bar/do_things_with_object_2
发送 GET 请求。
您的 url conf 需要捕获 pk(和模型,此处为:bar
),并且您的视图需要在对象上执行您想要的任何操作。
【讨论】:
以上是关于在 django 管理更改列表页面上的每条记录上添加按钮?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 django 管理页面中的每一行的列表页面上放置一个按钮