样式 - 何时序列化Django模型实例:信号与模型的保存方法

时间:2008-09-25 03:25:52

标签: python django

我计划在保存或更新Django模型时将其序列化为XML。 (XML将被导入到flash电影中)。是否更好地监听post_save()或pre_save()信号然后执行序列化,或者只是在模型的save()方法中处理它

2 个答案:

答案 0 :(得分:2)

如果它是保存模型的核心功能,您将需要它作为保存方法的一部分。但是,如果您已经有一个正常运行的模型并且想要将其扩展用于其他目的,那么信号是您最好的选择,因为它们允许正确解耦的模块。

一个很好的例子可能是您希望将事件记录添加到您的站点,因此您只需侦听表示事件的信号,而不是修改原始站点代码。

post_save()通常是最好的,因为它意味着模型已成功保存,使用pre_save()并不能保证保存成功,因此不应该用于任何依赖于保存完成的内容。

答案 1 :(得分:0)

保存后。这样,新数据(执行序列化的原因)已经存在于数据库中。它只需要从数据库中获取更清晰的代码,而不必担心添加额外的值。

另一种想到的方法是将xml文件与数据库并行维护。也就是说,在save()中将数据添加到数据库和xml文件中。如果你正在处理庞大的表格,那么这将减少开销。