【问题标题】:How to save model data using custom button instead of using Save button in Django admin [closed]如何使用自定义按钮而不是在 Django admin 中使用“保存”按钮来保存模型数据 [关闭]
【发布时间】:2020-06-28 12:12:47
【问题描述】:

我想在管理表单中添加一个自定义按钮 X 以及保存按钮,每当我单击按钮 X 时,我都想保存当前数据并发送电子邮件。

我不想在每次保存后发送电子邮件,所以不能使用post_save 信号。我可以添加自定义按钮。如何在详细信息页面中为按钮 X 添加此功能?

【问题讨论】:

  • 请添加您目前所做的任何脚本

标签: django django-admin


【解决方案1】:

您可以覆盖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

【讨论】:

  • 成功了。谢谢!
  • @SushmaYadav 不客气 :),虽然它已关闭
猜你喜欢
  • 2021-07-31
  • 2016-08-26
  • 2012-01-16
  • 2016-07-25
  • 1970-01-01
  • 1970-01-01
  • 2012-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多