Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django—创建对象快照的最佳方法_Python_Django - Fatal编程技术网

Python Django—创建对象快照的最佳方法

Python Django—创建对象快照的最佳方法,python,django,Python,Django,我目前正在从事一个涉及区块链的Django 2+项目,我想将我的一些对象状态复制到该区块链中 基本上,我有一个模型(比如“合同”),它有几个“签名”对象的列表 我想拍一张有签名的合同快照。我所做的基本上是在某个时间点(例如创建合同时)获取合同并从中构建JSON 我的问题是:每当添加/更新/删除签名时,以及每次修改合同时,我都要更新快照 直观的解决方案是覆盖快照中涉及的每个模型的每个“删除”、“创建”、“更新”,并祈祷所有这些模型都正确实施,并且我没有忘记任何一个。但我认为这是不可伸缩的,很难调试

我目前正在从事一个涉及区块链的Django 2+项目,我想将我的一些对象状态复制到该区块链中

基本上,我有一个模型(比如“合同”),它有几个“签名”对象的列表

我想拍一张有签名的合同快照。我所做的基本上是在某个时间点(例如创建合同时)获取合同并从中构建JSON

我的问题是:每当添加/更新/删除签名时,以及每次修改合同时,我都要更新快照

直观的解决方案是覆盖快照中涉及的每个模型的每个“删除”、“创建”、“更新”,并祈祷所有这些模型都正确实施,并且我没有忘记任何一个。但我认为这是不可伸缩的,很难调试和维护

我想到了一个更集中的解决方案:使用定期作业获取对象的最后更新日期,将其与快照的日期进行比较,并在必要时更新快照

但是通过该解决方案,我可以在修改或创建对象时识别更改,但在删除对象时却无法识别更改

所以,这是我的一个大问号:如何使用django,仅仅通过查看当前数据库的状态,在没有任何先前上下文的情况下识别关系中的删除?是否有django模块记录删除的对象?你对我的问题有什么看法

我认为,正如我理解您的问题一样,您需要一个类似Django Signals的模块,它侦听数据库中的更改,并在确定后(如果满足所有所需的条件),在应用程序中执行某些命令(甚至能够在数据库中执行)

这是最新的文档: