分阶段更新模型实例和相关密钥以进行并发访问

时间:2018-06-07 17:28:18

标签: django django-models concurrency readwritelock

我有一个Django模型,其中包含一些需要更新一次或多次的相关键(模型实例及其相关键)。但是,当完成一个或多个更新时,用户可以选择取消所有更新或保留它们。它是全部或全部,不需要保留中间变化。当一个用户正在编辑它时,其他用户只能读取它,并且应该能够看到最后提交的更改。在Django中实现这一目标的最佳方法是什么?感谢。

我想到了两个选项:

1.0实例的临时副本 1.1方法:使用原始模型实例/相关键中的新相关键创建新模型实例。并对此新副本进行所有更改。当用户完成后,用新实例覆盖原始实例的内容并删除新实例,更新相关密钥等。如果用户取消更改,则只需删除新实例。 1.2缺点:需要对许多键进行特殊处理,例如自动生成的键,相关键等。添加新的相关键时似乎不会自动处理。 1.3优点:非常本地化的变更,不会影响我的整个项目。

2.0使用django-reversion之类的修订控制。 2.1方法:使用版本#或注释指示更改何时完成,以及当有人更新记录时返回读取的版本。 2.2缺点:要求我在访问此特定模型的许多地方更新我的代码。还需要额外的相关键工作。 2.3优点:看起来更干净但是相关键需要额外的工作并在整个应用程序中进行更改让我质疑这种方法。

想法?

0 个答案:

没有答案
相关问题