“Django admin”;“现场保存和查看”;按钮

“Django admin”;“现场保存和查看”;按钮,django,django-admin,Django,Django Admin,Django管理站点非常棒,我们在我的工作中经常使用它。我的问题是-如何在底部添加一个附加按钮,以及“保存”、“保存并继续编辑”等按钮,用于保存模型,然后重定向到表单右上角已定义模型的“查看站点”按钮 提前谢谢 除了在change\u表单模板中添加按钮外,您还需要覆盖ModelAdmin方法(和response\u add) 像这样的方法应该会奏效: def response_change(self, request, obj): res = super(MyModelAdmin, self

Django管理站点非常棒,我们在我的工作中经常使用它。我的问题是-如何在底部添加一个附加按钮,以及“保存”、“保存并继续编辑”等按钮,用于保存模型,然后重定向到表单右上角已定义模型的“查看站点”按钮


提前谢谢

除了在change\u表单模板中添加按钮外,您还需要覆盖ModelAdmin方法(和
response\u add

像这样的方法应该会奏效:

def response_change(self, request, obj):
  res = super(MyModelAdmin, self).response_change(request, obj)
  if "_preview" in request.POST:
    return HttpResponseRedirect('preview-url-here')
  else:
    return res

要做到这一点,但也可以选择对某些模型表单显示/隐藏它,以下是我所做的:

一,。首先,通过在主模板文件夹下创建一个自定义模板来覆盖
submit\u line.html
模板:
my\u project/templates/admin/submit\u line.html
,从原始模板复制内容,并将自定义按钮添加到
submit row
块(默认情况下不会显示,因为它设置为False):

现在,它将针对这个特定的表单显示,要对其他模型执行相同的操作,只需覆盖上面的两个方法

# submit_line.html

{% load i18n admin_urls %}
<div class="submit-row">
{% block submit-row %}
{% if show_save %}<input type="submit" value="{% trans 'Save' %}" class="default" name="_save">{% endif %}
...
...
...
{% if show_save_and_preview|default:False %}<input type="submit" value="{% trans 'Save and preview' %}" name="_preview">{% endif %}
{% endblock %}
</div>
# admin.py

class MyModelAdmin(admin.ModelAdmin):
    # ..
    # ..

    def changeform_view(self, request, object_id=None, form_url='', extra_context=None):
        extra_context = extra_context or {}
        extra_context['show_save_and_preview'] = True
        return super(MyModelAdmin, self).changeform_view(request, object_id, extra_context=extra_context)

    def response_change(self, request, obj):
        res = super(MyModelAdmin, self).response_change(request, obj)
        if "_preview" in request.POST:
            # used object's custom method "get_url()":
            return HttpResponseRedirect(obj.get_url())
        else:
            return res