对django管理员更改列表页面上的每条记录添加按钮?

时间:2018-02-08 15:43:49

标签: django python-3.x django-templates django-admin

我想在django管理员更改列表页面上为每一行添加一个按钮。单击该按钮时,我想在某个数据库表中创建条目(所有这些都发生在后端),之后应该在该行的同一页面上禁用该按钮。

我怎样才能做到这一点?我搜索了很多按钮,没有可用的解决方案。

1 个答案:

答案 0 :(得分:0)

您必须在生成结果项的位置(靠近底部)编辑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>

(不要忘记进一步更新表格标题)
您将不得不通过弄乱{{pk}}中的模板标签result_list来为django.contrib.admin.template_tags.admin_list提供模板上下文变量 - 这意味着您正在为此创建your own templatetag

然后你需要设置一个视图和一个url conf来处理链接发送的请求 我们假设您在foo/bar并点击pk=2行的链接。将为foo/bar/do_things_with_object_2发送GET请求 你的url conf需要捕获pk(以及模型,这里:bar),你的视图需要在对象上做你想做的任何事情。