【问题标题】:Add button against each record on django admin change list page?在 django 管理更改列表页面上的每条记录上添加按钮?
【发布时间】:2018-07-19 06:04:47
【问题描述】:

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

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

【问题讨论】:

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


    【解决方案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),并且您的视图需要在对象上执行您想要的任何操作。

    【讨论】:

      猜你喜欢
      • 2015-09-08
      • 2013-07-28
      • 2013-01-07
      • 1970-01-01
      • 2020-09-14
      • 1970-01-01
      • 2017-01-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多