【发布时间】:2017-07-14 23:34:23
【问题描述】:
我正在开发一个 Django + DRF Web 应用程序,我想跟踪数据库中所有模型实例的更改并记录所有所做的更改,即:
TABLE - Table to which record was added/modified
FIELD - Field that was modified.
PK_RECORD - Primary Key of the model instance that was modified.
OLD_VAL - Old Value of the field.
NEW_VAL - New Value of the field.
CHANGED_ON - Date it was changed on.
CHANGED_BY - Who changed it?
REVISION_ID - Revision ID of the current Model Instance.
稍后,我希望用户能够跟踪对模型所做的更改,并查看哪个版本的实例用于特定操作,以便跟踪所有内容。
为此,我试图了解 django 中用于跟踪数据库模型更改的各种包,其中一些在这里列出:
我尝试了django-reversion、django-simple-history、django-audit-log、django-historicalrecords,但我不明白我应该如何以及为什么要使用这些包中的每一个,因为其中一些包对于要求来说似乎是矫枉过正。所以,经过两天的搜索和阅读大量关于我应该如何跟踪模型变化的帖子后,我基本上什么也没做。
我是 Django 新手,希望能得到任何帮助。
如果有不清楚的地方,请随时评论您的疑问。在此先感谢:)
【问题讨论】:
-
您是否还实现了跟踪更改以反转相关字段更改?您能否提供要点或存储库链接?我将实施相同的方法。
-
嘿.. 抱歉,这已经超过两年了。我不完全记得我是怎么做到的。我认为我们保留了更改的记录,因为在哪个日期在哪个表中的哪个记录上更改了哪些键和值。我们只保留了该记录的新值和旧值,并为此使用了 JSON 字段。由于各种字段可以有各种类型,我们决定将所做的更改保存为更改表中 JSONObject 中的 {key:pair} 。那有意义吗?如果没有,或者给我发消息。
标签: python django django-models database-versioning