【问题标题】:Show change log history for model instance using django-reversion使用 django-reversion 显示模型实例的更改日志历史记录
【发布时间】:2016-12-04 10:09:52
【问题描述】:

使用: django 1.10 版本 2.0.8。

我的问题是如何显示对给定模型实例所做的更改的漂亮列表。我的意思是用户可以快速查看所有修订中的所有更改(字段的新值)的列表。他不需要查看所有字段,只需查看更改后的新值即可。

所以我发现存储更改的好工具是 django-reversion。但是,我找不到我的问题的解决方案,正如我所提到的,它是为给定的模型实例显示一个很好的更改日志历史记录。

我找到了可以比较两个修订版django-reversion-compare的解决方案,但这不是我想要的。也许有更好的工具?

任务太快地向用户显示由谁以及何时更改的内容。该模型很简单,不存储大量数据。但是它确实存储了外键。

【问题讨论】:

  • 你最终做了什么?

标签: python django versioning django-reversion


【解决方案1】:

我也想这样做,在阅读了一些 SO 帖子、文档等之后,我似乎不得不从以下 3 种方法之一中粗略地选择解决方案:

1) 在保存新模型实例之前获取现有模型实例。比较每个字段。将更改的字段放入 reversion.set_comment('(all changes here)')。继续保存模型实例。

2) 在模型的 __init__() 中单独保存旧字段的副本,然后将新字段与它们进行比较(在模型的 save() 中)以跟踪更改的内容。将更改的字段放入 reversion.set_comment('(all changes here)')。继续保存模型实例。 (这种方法将节省数据库查找)

3) 使用 django-reversion 的 low-level API 生成 diff 并以某种方式与管理员集成

我最终使用了 django-reversion-compare,这对我展示编辑 wiki 样式非常有用(无论如何都可能使用上面的 (3))

django-reversion 的开发者还 confirmed (3) 作为更好的选择,它也可以避免竞争条件。

如果您想探索不同的选择,this 是一个很棒的 SO 帖子,其中包含许多好主意及其优缺点。

(我也在 Django 1.10)

【讨论】:

    猜你喜欢
    • 2012-08-22
    • 2020-10-10
    • 1970-01-01
    • 2011-06-05
    • 1970-01-01
    • 2020-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多