2

I'm searching for a django package that would allow me to save history of my models, but only on updates. I found django-reversion, but after a quick look it doesn't seem to have such ability. Database triggers are also not an option, since my database structure is rather complicated, and writing them would be hard.

4

2 回答 2

1

我在某个时候遇到了同样的问题。

我当时的解决方案是定义两个模型:

  • content:对应于网站内容的抽象。该模型是保存网站当前内容的模型。
  • action:对应于网站内容变化的抽象。

content有两个指向动作的指针 (OneToOneField):第一个 edit是创建该特定内容的动作和last edit是对内容进行最后修改的动作。

action有一个指针 (OneToOneField) 指向一个演员,即做出该动作的用户,还有一个指针 (ForeignField) 指向另一个动作,即针对特定内容的前一个动作。它还有一个保存内容更改的 TextField。例如,这可以是用于数据库的类似 diff 的文本,或者只是一个腌制的字典。

在某种意义上这相当于 git 之类的版本控制,其中“动作”是对特定内容(而不是整个项目)的提交,内容是源。提交通过“先前提交”链接,并保存内容更改和用户。

于 2013-05-15T09:43:21.693 回答
0

你可以使用。它检测模型的更改并创建允许您向前和向后同步数据库的迁移文件。

于 2013-05-15T12:16:09.843 回答