django - 使用 Django Model 类继承为表创建审核日志

标签 django django-models

我想使用http://docs.djangoproject.com/en/dev/topics/db/models/#model-inheritance对现有模型进行子类化,以便创建对原始表中任何记录所做的每个更改的完整历史记录。

class Foo:
  data = models.TextField()
  created_at = models.DateTimeField(auto_now_add=True)
  updated_at = models.DateTimeField(auto_now=True)

  def save():
    super(...)
    audit = FooAuditLog.createFromFoo(self)

class FooAuditLog(Foo):
  history_for = models.ForeignKey(Foo)

  def createFromFoo(foo):
    ... #Create the auditlog entry from the original record.

因此,每次创建或更新“Foo”类型的记录时,我都想拍摄 Foo 记录的快照并向 FooAuditLog 添加另一个条目。我的目标是拥有每条 Foo 记录的完整修订历史记录,以便我可以跟踪一段时间内对每条记录所做的每一项更改。

这种方法有哪些缺陷?如果 Foo 之间存在外键关系,我是否需要担心 Foo 和 FooAuditLog 之间的级联删除/更新?

最佳答案

为什么不使用像 Audit Trail 这样的东西呢?应用程序?我真的看不出继承如何真正适合日志记录所需的抽象。 Audit Trail 在类中使用一个简单的声明来封装所有事件。

关于django - 使用 Django Model 类继承为表创建审核日志,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4372538/

相关文章:

python - 添加时的 Django 管理模型无法呈现相关的更改链接

json - 如何限制Django Rest Framework反向关系中的记录数

python - 选择基于数据库值 Django 检查哪个单选按钮

python - Django .latest() 值

Django + Postgres : How to specify sequence for a field

python - Django,在对象循环中获取相关对象

python - Django注册如何检查用户是否存在

python - DJango Dev Server 奇怪的输出 ppcfinder.net/judge.php

Django ORM 按过滤器排序

Django 按日期排序,但末尾有 "None"?