django-admin在详情页自定义按钮
如果是在表单最上面添加按钮,新建一个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)
大功告成!