样式-何时序列化Django模型实例:信号vs模型的save方法
时间:2020-03-06 14:42:09 来源:igfitidea点击:
我计划在保存或者更新Django模型时将其序列化为XML。 (XML将被导入到Flash电影中)。侦听post_save()或者pre_save()信号然后执行序列化,还是只在模型的save()方法中处理它,是更好的选择吗?
解决方案
发布保存。这样,新数据(执行序列化的原因)已经在数据库中。这将使代码更加简洁,只需从数据库中获取代码,而不必担心增加额外的价值。
想到的另一种方法是将xml文件与数据库并行维护。也就是说,在save()中,将数据添加到数据库和xml文件中。如果我们要处理大型表,则开销会少得多。
如果它是保存模型的核心功能,则需要将其作为保存方法的一部分。但是,如果我们已经有一个正常运行的模型,并且想将其扩展用于其他目的,那么信号是最佳选择,因为它们允许正确解耦的模块。
一个很好的例子是我们想向站点添加事件日志,因此我们只需侦听表示事件的信号,而不用修改原始站点代码。
post_save()通常是最好的,因为这意味着模型已成功保存,使用pre_save()不能保证保存成功,因此不应将其用于任何需要完成保存的事情。