Django:如何在保存(用户更新)原始记录之前将记录保存在新的 table 中

Django: How to save a record in a new table before saving (user udates) the original

场景:

问题:

每次记录发生任何变化时,我都需要在不同的日志 table 中保留一个 log(包含时间和用户名)。

日志 table 与原始模型(例如 ChangeLogModel)看起来很相似,只是增加了 2 个额外的字段,如 logDate 和 ChangingUser。 这将帮助我检查日志并找到问题在任何特定日期的状态。

可能的解决方案:

总结: 基本上我要的是一个日志 table,其中原始 record/row/tuple 的 'state' 将在点击 [=61] 之前保存到另一个 table(即 logTable) =]触发。 因此,每次更新记录时,LogTable 都会得到一个带有日期戳的新行。

我认为最好的方法就是直截了当。您可以保存用户的答案,然后立即保存日志,用 database transaction 包装它,如果出现问题则回滚。 顺便说一句,如果日志 table 具有与原始模型相同的字段,您可能会考虑使用外键或继承,这取决于您的程序逻辑。

您可以使用 django 包进行审计和历史记录,例如 overview 中的任何一个。

我成功使用了 django-simple-history