在 Django 的管理 change_form 中创建自定义按钮

新手上路,请多包涵

我想在管理界面的添加/更改表单中添加自定义按钮。默认情况下,只有三个:

  • 保存并添加另一个

  • 保存并继续编辑

  • 节省

我在我的 forms.py 文件中创建了一些自定义方法,我想创建按钮来调用这些方法。我使用了片段 http://djangosnippets.org/snippets/1842/ ,但这并不是我想要的。这允许从 admin.py 文件而不是 forms.py --- 文件创建按钮和调用方法。

有没有办法做到这一点?

这是我的 admin.py 代码:

 class CategoryAdmin(admin.ModelAdmin):
    prepopulated_fields = { "alias": ("title",) }
    form = CategoryForm

admin.site.register(Category, CategoryAdmin)

还有我的 forms.py 代码:

 class CategoryForm(forms.ModelForm):
    """
    My attributes
    """
    def custom_method(self):
        print("Hello, World!")

如何创建调用“custom_method()”的按钮?

原文由 bnabilos 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 840
2 个回答

您可以覆盖 admin/change_form.html 。将 contrib.admin.templates 中的版本复制到您的项目中。我的是 myproject/templates/admin/change_form.html ,但你可以使用 /myproject/myapp/templates/admin/change_form.html

接下来,编辑副本并将对现有模板标签 {% submit_row %} 的两个引用更改为指向您自己的模板标签 {% my_template_tag %}

将您的模板标签基于 contrib.admin{% submit_row %} ,但编辑 HTML 模板以包含您想要显示的任何额外按钮。

原文由 Andy Baker 发布,翻译遵循 CC BY-SA 3.0 许可协议

我发现添加按钮的一种简单方法是为自定义按钮添加另一行。根据您的需要在模板目录中创建一个管理目录。例如,我通常在自定义模板中为特定模型添加按钮。创建一个“templates/admin/app/model/”目录。

然后添加文件 _changeform.html

 {% extends "admin/change_form.html" %}
{% load i18n %}

{% block submit_buttons_bottom %}
    <div class="submit-row">
       <input type="button" value="{% trans 'Another Button' %}" name="_anotherbutton" />
    </div>

    {{ block.super }}
{% endblock %}

{{ block.super }} 之前的代码受到模板标签 {% submit_row %} 使用的 _submitline.html 模板的启发。我更喜欢这种方法,因为它很简单,但你必须忍受另一排按钮。

在此处输入图像描述

原文由 Karim N Gorjux 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题