如何在需要时跟踪交易和回滚的历史记录?

时间:2019-07-02 07:45:29

标签: django django-models django-rest-framework

假设我正在维护UserActivity模型中的用户的活动日志。

class UserActivity(models.Model):
    description = models.TextField()
    query = models.TextField()
  1. 该模型的实施方法和必填字段,以便我能够 随时回滚历史记录中的交易吗?
  2. 它的缺点和依赖性是什么?

我认识transaction.atomic。认为这是几天前进行的交易,今天回滚。

1 个答案:

答案 0 :(得分:0)

我建议您使用django-simple-history [PiPy]之类的工具。您需要添加一些中间件,并在要跟踪的模型上定义一个HistoricalRecords()

它将为您跟踪的每个模型创建一个额外的表,该表将存储更改(添加,更新,删除)以及进行更新的用户,时间戳和可选原因。

例如,您可以查询历史记录中对象的状态,例如:

from datetime import datetime

my_model_object.history.as_of(datetime(2019, 7, 2, 7, 56))

以处于2-7-2019 7:56:00的状态检索my_model_object