在Django管理员中添加新项目,然后重定向到另一个页面

时间:2019-06-22 00:01:43

标签: python django url

我想从定制模板添加一个链接,该链接进入Django管理员添加页面:

  • 将要更改的模型是动态的,如下面的代码所示,但是它将具有一个选择字段,我希望将其填充,并禁止对其进行进一步的更改,直到可以保存为止;
  • 保存后,它返回到相同的模板(通过视图);
  • 使用新数据更新模板中的图表。

我认为最简单的方法是将添加页面打开到弹出窗口中,但是在保存模型之后,它会返回列表并且不关闭弹出窗口,也许有一个属性可以使这种情况发生?我尝试过_is_popup,但是什么也没做。

我尝试的另一件事是弄乱名为submit_line.htmladmin_modify.py templatetag的管理模板。

<a href="/admin/core/{{ indicator_key }}/add/?_is_popup=1" target="popup"
onclick="window.open('/admin/core/{{ key }}/add/?_is_popup=1',
'popup','width=600,height=800'); return false;"></a>

1 个答案:

答案 0 :(得分:0)

在深入研究Django源代码后,我解决了:

template.html

<a href="#" target="popup"
onclick="window.open('/admin/<app>/<model>/add/?_popup=1&hospital={{ hospital.id }}',
'popup','width=600,height=800'); return false;"></a>

在这种情况下,它将作为弹出窗口打开,并自动为hospital填充其ID。

template.js

function dismissChangeRelatedObjectPopup(window, value, obj, new_obj) {
    window.close();
    location.reload(); 
}
function dismissDeleteRelatedObjectPopup(window, value) {
    window.close();
    location.reload(); 
}
function dismissAddRelatedObjectPopup(window, value, obj) {
    window.close();
    location.reload(); 
}

根据您的需要添加了此javascript,这是在将模型保存到弹出窗口后发生的情况。就我而言,我仅使用添加功能,并且由于需要重新加载页面以更新某些图表,因此我使用了location.reload();