django - 如何在需要时跟踪交易历史和回滚?
问题描述
假设我在UserActivity
模型中维护用户的活动日志。
class UserActivity(models.Model):
description = models.TextField()
query = models.TextField()
- 该模型如何实现以及需要哪些字段,以便我可以随时回滚历史中的事务?
- 它的缺点和依赖关系是什么?
我知道transaction.atomic
。将其视为几天前进行的交易并在今天回滚。
解决方案
我建议您使用django-simple-history
[PiPy] 之类的工具。您需要添加一些中间件,并HistoricalRecords()
在要跟踪的模型上定义 a。
它将为您跟踪的每个模型创建一个额外的表,该表将存储更改(添加、更新、删除)以及进行更新的用户、时间戳和可选原因。
例如,您可以查询历史中对象的状态,例如:
from datetime import datetime
my_model_object.history.as_of(datetime(2019, 7, 2, 7, 56))
检索my_model_object
2019 年 2 月 7 日 7:56:00 的状态。
推荐阅读
- r - ggplot中的形状映射
- javascript - 错误:元素类型无效,检查 React Native 中的渲染方法
- jenkins - 关于 Jenkins 作业状态预览,如何忽略中止的构建?
- php - 使用 Visual Composer 插件的 Wordpress 迁移 PHP 问题
- python - Python:根据第三个变量着色的条形图
- file-io - 使用 Huffman 编码,文件压缩到底是如何在低级别工作的?(在 C 中)
- haskell - 尝试在 Haskell 中实现一个简单的递归列表遍历算法。垂死
- c - 向使用数组索引的数组添加第二个函数
- python - 将列表解析为字典列表(使用 Dict 函数)
- multithreading - 访问文件的进程/线程信息