djangoadmin在详情页自定义按钮

如果是在表单最上面添加按钮,新建一个HTML文件,这样写

{% extends 'admin/change_form.html' %}
{% block submit_buttons_top %}
    <div class="submit-row">
            <input type="submit" value="1.button" name="_render-sql">
            <input type="submit" value="2.button" name="_test-api">
    </div>
{% endblock %}

如果自定义按钮要放在下面,这样写

{% block submit_buttons_bottom %}
<!--如果要保留原有按钮,下面这行要保留-->
{% submit_row %}
<div class="submit-row">
            <input type="submit" value="1.button" name="_render-sql">
            <input type="submit" value="2.button" name="_test-api">
    </div>
{% endblock %}

将HTML文件放在当前app的templates目录下

在admin.py的admin类中指定

change_form_template = 'new_change_form.html'

重写reponse_change方法

    def response_change(self, request, obj):
        if "_test-api" in request.POST:
            #your code
            self.message_user(request, json.loads(s))
            return HttpResponseRedirect(".")
        elif "_render-sql" in request.POST:
            #给用户发自定义消息,然后重定向到本页面
            return HttpResponseRedirect(".")
        return super().response_change(request, obj)    

大功告成!

原文地址:https://www.cnblogs.com/wangbin2188/p/15736537.html