保存确认页面在哪里可以挂接到 Django 管理员? (类似于删除确认)

Posted

技术标签:

【中文标题】保存确认页面在哪里可以挂接到 Django 管理员? (类似于删除确认)【英文标题】:Where can a save confirmation page be hooked into the Django admin? (similar to delete confirmation) 【发布时间】:2010-09-11 23:20:51 【问题描述】:

我想在保存之前模拟删除确认页面的行为 管理员中的某些模型。在我的情况下,如果我改变一个对象, 某些其他的应该被删除,因为它们取决于对象的现在 过时的状态。

我知道在哪里实现实际的级联更新(内部 父模型的保存方法),但我没有看到快速询问的方法 用户进行确认(如果他们决定不确认则回滚 保存)。我想我可以实现一些奇怪的确认逻辑 直接在保存方法中(有点像两阶段保存),但是 看起来……丑陋。

任何想法,甚至是对 django 代码库的一般指针?

谢谢!

【问题讨论】:

嗨,我正要发布同样的问题。您是否设法解决了这个问题? 不,我从来没有想过这个。在我的情况下,这不是一个很常见的操作,所以我只是下注。 【参考方案1】:

您可以重载模型管理员的 get_form 方法,并在生成的表单中添加一个额外的复选框,该表单必须是票证。或者,您可以覆盖 change_view 并拦截请求。

【讨论】:

我们就是这样做的,但我可以看到使用 javascript 显示确认屏幕更容易实现。【参考方案2】:

我绝不是 Django 专家,所以这个答案可能会误导你。

开始寻找django.contrib.admin.options.ModelAdmin 周围的某个地方,尤其是render_change_formresponse_change。我猜你需要为你的模型继承 ModelAdmin 并围绕这些方法提供所需的行为。

【讨论】:

【参考方案3】:

您是否考虑过覆盖相关模型的管理模板?这个link 提供了一个很好的过程概述。在这种特殊情况下,进行更细粒度的控制可能是实现预期结果的最佳方式。

【讨论】:

我已经重载了部分 change_form,但这种特殊行为似乎被硬编码到核心中(至少是保存后重定向 url)。也许我可以隐藏帖子保存确认网址并在那里做一些时髦的事情?

以上是关于保存确认页面在哪里可以挂接到 Django 管理员? (类似于删除确认)的主要内容,如果未能解决你的问题,请参考以下文章

确认后未执行 Django 管理操作

Django堆栈开发过程中保存的数据在哪里

django ModelAdmin autocomplete_fields中保存的ID在哪里?

电脑保存的密码在哪里查看

Django,在保存期间自动设置字段,基于其他管理页面输入

如何设置模型实例以在Django中生成确认表单