我想在django管理员更改列表页面上为每一行添加一个按钮。单击该按钮时,我想在某个数据库表中创建条目(所有这些都发生在后端),之后应该在该行的同一页面上禁用该按钮。
我怎样才能做到这一点?我搜索了很多按钮,没有可用的解决方案。
答案 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
),你的视图需要在对象上做你想做的任何事情。