在 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 管理页面中的每一行的列表页面上放置一个按钮

为嵌套列表中的每条记录绘制回归线

更改列表页面上的 django admin 附加字段

将列表与 DataFrame 中的每条记录进行比较

Django-admin:如何在记录更改列表中显示指向对象信息页面的链接而不是编辑表单?

使用条件控制源控制报表中的每条记录