【发布时间】:2020-06-28 12:12:47
【问题描述】:
我想在管理表单中添加一个自定义按钮 X 以及保存按钮,每当我单击按钮 X 时,我都想保存当前数据并发送电子邮件。
我不想在每次保存后发送电子邮件,所以不能使用post_save 信号。我可以添加自定义按钮。如何在详细信息页面中为按钮 X 添加此功能?
【问题讨论】:
-
请添加您目前所做的任何脚本
标签: django django-admin
我想在管理表单中添加一个自定义按钮 X 以及保存按钮,每当我单击按钮 X 时,我都想保存当前数据并发送电子邮件。
我不想在每次保存后发送电子邮件,所以不能使用post_save 信号。我可以添加自定义按钮。如何在详细信息页面中为按钮 X 添加此功能?
【问题讨论】:
标签: django django-admin
您可以覆盖admin/change_form.html,查看如何Overriding admin templates
在admin/change_form.html,你可以找到这一行:
{% block submit_buttons_bottom %}{% submit_row %}{% endblock %}
{% submit_row %} 是呈现按钮列表的位置,您可以先扩展 change_form 以添加新按钮:
{% extends 'admin/change_form.html' %}
{% block submit_buttons_bottom %}
{{ block.super }} <!-- or simply {% submit_row %} -->
<div class="submit-row">
<input type="submit" value="X" name="_button_x">
</div>
{% endblock %}
添加新按钮后,您可以指定要用于更改页面的模板。
response_change在提交管理表单后调用 在保存对象和所有相关实例之后。你 可以覆盖它以更改对象后的默认行为 已更改。
@admin.register(YourModel)
class YourModelAdmin(admin.ModelAdmin):
# specify the new template you would like to use
change_form_template = "<change_form_template>"
def response_change(self, request, obj):
if "_button_x" in request.POST:
# customization here
...
return super().response_change(request, obj)
您可以阅读更多here
【讨论】: