我在我的(相当标准的)Django 应用程序中定义了一些管理操作。如果在对象的详细信息页面上可用,其中一些操作也会很有意义。
现在,用户需要导航回列表,然后搜索特定记录,然后触发操作。
有没有办法在详细信息页面上也公开此功能?
最佳答案
Here是您正在寻找的答案。
基本上,您创建一个包含以下内容的yourmodel_changeform.html 文件:
{% extends 'admin/change_form.html' %}
{% block submit_buttons_bottom %}
{{ block.super }}
<div class="submit-row">
<input type="submit" value="Button Label" name="_your-action-name">
</div>
{% endblock %}
然后重写 ModelAdmin 类上的response_change 方法并设置 change_form_template 属性。
from django.http import HttpResponseRedirect
class YourModelAdmin(admin.ModelAdmin):
change_form_template = "templatelocation/yourmodel_changeform.html"
def response_change(self, request, obj):
if "_your-action-name" in request.POST:
# do whatever you want the button to do
obj.name = "new name"
obj.save()
return HttpResponseRedirect(".") # stay on the same detail page
return super().response_change(request, obj)
在 Django 3.0.3 上测试
关于python - 详细 View 中的 Django 管理操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33763379/