我正在使用django' ?_popup=1
在弹出窗口中显示表单。默认情况下,该表单仅显示带有name=_save
的提交按钮。这意味着保存页面后返回更改列表页面。
对于我的用例,我修改了它以使用带有name=_continue
行为的提交按钮,这意味着它保留在编辑页面上。
保存后_popup
丢失并且“非弹出式优化”#39;编辑页面显示在弹出窗口内。
我在response_change()
(Django 1.6,ln 956)中挖掘contrib/admin/options.py
方法。重定向似乎不再带有_popup
变量。
有没有人知道如何使这项工作?可能我错过了一些东西,但这次谷歌搜索并没有为我做这件事。
答案 0 :(得分:2)
有点hacky解决方案,但我没有找到更好的解决方案。由于response_change()中始终存在对request.path的重定向,因此我们可以通过更改它来做任何伤害。
class MyAdmin(admin.ModelAdmin):
# ...
def response_change(self, request, obj):
if '_popup' in request.REQUEST:
request.path += '?_popup=1'
return super(MockupAreaAdmin, self).response_change(request, obj)
答案 1 :(得分:0)
https://github.com/django/django/blob/1.6/django/contrib/admin/options.py#L968
尝试覆盖:
def response_change(self, request, obj):
...
return HttpResponseRedirect(redirect_url)
为:
if "_popup" in request.REQUEST:
return HttpResponseRedirect(request.path + "?_popup=1")
else:
return HttpResponseRedirect(request.path)