Django 数据库更改历史记录

Django 数据库更改历史记录,django,django-models,Django,Django Models,我正在搜索一个django包,它允许我保存模型的历史记录,但只能在更新时保存。我发现了django回归,但快速查看后,它似乎没有这样的能力。数据库触发器也不是一个选项,因为我的数据库结构相当复杂,编写它们会很困难。我在某个时候也遇到过同样的问题 当时我的解决方案是定义两个模型: 内容:对应于网站内容的抽象。此模型保存网站的当前内容 动作:对应于网站内容变更的抽象 内容有两个指向操作的指针(OneToOneField):第一次编辑,它是创建特定内容的操作;最后一次编辑,它是对内容进行最后一次修

我正在搜索一个django包,它允许我保存模型的历史记录,但只能在更新时保存。我发现了django回归,但快速查看后,它似乎没有这样的能力。数据库触发器也不是一个选项,因为我的数据库结构相当复杂,编写它们会很困难。

我在某个时候也遇到过同样的问题

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

  • 内容:对应于网站内容的抽象。此模型保存网站的当前内容
  • 动作:对应于网站内容变更的抽象
内容有两个指向操作的指针(OneToOneField):第一次编辑,它是创建特定内容的操作;最后一次编辑,它是对内容进行最后一次修改的操作

操作有一个指向参与者的指针(OneToOneField),即执行操作的用户,还有一个指向另一个操作的指针(ForeignField),即特定内容上的上一个操作。它还有一个文本字段,用于保存内容更改。例如,这可以是数据库的diff-like文本,或者只是一个pickle字典


从某种意义上讲,这相当于像git这样的版本控制,其中“操作”是对特定内容(而不是整个项目)的提交,而内容是源。提交通过“上一次提交”链接,并保存内容更改和用户。

您可以使用。它检测对模型的更改,并创建迁移文件,使您能够前后同步数据库。

这可能很有用:。您可以使用此链接添加答案-如果没有人给我更好的答案,我将接受您发送的链接,只有答案通常是正确的。因为我自己从来没有使用过这些工具,所以我将把它作为一个评论。无论如何,谢谢你!