保存对象后使用相关对象?

Posted

技术标签:

【中文标题】保存对象后使用相关对象?【英文标题】:Using related objects after an object is saved? 【发布时间】:2010-11-30 21:57:53 【问题描述】:

我有一种情况,我想在每次保存、更新或删除模型实例时卸载一个 xml 片段(一个原子事件)。片段需要包含相关对象的信息。

在保存对象后,我找不到可让我使用来自相关对象的信息的事件。 post_save 信号似乎在相关对象被保存之前被触发。

目前我正在覆盖ModelAdmin save_model method 以输出一个完整的原子条目,其中包含有关实例及其相关对象的详细信息。但这仅在通过管理界面管理实例而不是在以编程方式更新实例时才有效。

任何人设法创建了类似于post_save_of_everything 信号的东西?

【问题讨论】:

【参考方案1】:

我想您可以将自己的保存方法添加到调用基类保存方法的模型中,然后创建您的原子提要。

【讨论】:

不幸的是,这将无法访问相关对象。 为什么不呢?它可以访问正在保存的实例,并以正常方式链接到其相关对象,确定吗? ManyToMany 属性在模型实例 save() 方法中为空,即使在调用了 super save 之后也是如此。它们显然是稍后保存的。 显然有些东西正在为 Django 1.2 准备:code.djangoproject.com/ticket/5390【参考方案2】:

每次保存实例时,原子条目是否只需要更新一次?如果没有,你不能只听相关对象的 post_save 吗?

【讨论】:

以上是关于保存对象后使用相关对象?的主要内容,如果未能解决你的问题,请参考以下文章

在 django admin 上编辑实际对象之前保存相关对象

如何在核心数据中保存与另一个对象相关的对象?

无法使用 pre_save 信号在 django 模型中保存相关对象

核心数据对象被保存,但在我弹出相关对象表然后出现之前不会出现在表中

session中持久化对象的相关状态转换和相关注解的使用

禁止保存()以防止由于未保存的相关对象“postid”而导致数据丢失