4

使用: django 1.10 版本 2.0.8。

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

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

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

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

4

1 回答 1

0

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

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

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

3)使用 django-reversion 的低级 API生成差异并以某种方式与管理员集成

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

django-reversion 的开发人员也确认(3) 是一个更好的选择,它也避免了竞争条件。

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

(我也在 Django 1.10 上)

于 2017-05-31T05:19:06.357 回答