Django:如何在保存(用户更新)原始记录之前将记录保存在新的 table 中
Django: How to save a record in a new table before saving (user udates) the original
场景:
- 开发问答应用。
- 这里有不同网友可以回答的问题。
- 每个问题可能有多个字段需要回答(2 或 3 个 yes/No 复选框),任何用户都可以随时更新其中的任何一个。
问题:
每次记录发生任何变化时,我都需要在不同的日志 table 中保留一个 log(包含时间和用户名)。
日志 table 与原始模型(例如 ChangeLogModel)看起来很相似,只是增加了 2 个额外的字段,如 logDate 和 ChangingUser。
这将帮助我检查日志并找到问题在任何特定日期的状态。
可能的解决方案:
使用signals(...不习惯with signals,缺少详细教程,文档也不详细)
在执行任何“.save()”之前进行备份(...不知道该怎么做)
安装任何外部应用程序(...尽量避免安装任何应用程序)
总结:
基本上我要的是一个日志 table,其中原始 record/row/tuple 的 'state' 将在点击 [=61] 之前保存到另一个 table(即 logTable) =]触发。
因此,每次更新记录时,LogTable 都会得到一个带有日期戳的新行。
我认为最好的方法就是直截了当。您可以保存用户的答案,然后立即保存日志,用 database transaction 包装它,如果出现问题则回滚。
顺便说一句,如果日志 table 具有与原始模型相同的字段,您可能会考虑使用外键或继承,这取决于您的程序逻辑。
您可以使用 django 包进行审计和历史记录,例如 overview 中的任何一个。
我成功使用了 django-simple-history。
场景:
- 开发问答应用。
- 这里有不同网友可以回答的问题。
- 每个问题可能有多个字段需要回答(2 或 3 个 yes/No 复选框),任何用户都可以随时更新其中的任何一个。
问题:
每次记录发生任何变化时,我都需要在不同的日志 table 中保留一个 log(包含时间和用户名)。
日志 table 与原始模型(例如 ChangeLogModel)看起来很相似,只是增加了 2 个额外的字段,如 logDate 和 ChangingUser。 这将帮助我检查日志并找到问题在任何特定日期的状态。
可能的解决方案:
使用signals(...不习惯with signals,缺少详细教程,文档也不详细)
在执行任何“.save()”之前进行备份(...不知道该怎么做)
安装任何外部应用程序(...尽量避免安装任何应用程序)
总结: 基本上我要的是一个日志 table,其中原始 record/row/tuple 的 'state' 将在点击 [=61] 之前保存到另一个 table(即 logTable) =]触发。 因此,每次更新记录时,LogTable 都会得到一个带有日期戳的新行。
我认为最好的方法就是直截了当。您可以保存用户的答案,然后立即保存日志,用 database transaction 包装它,如果出现问题则回滚。 顺便说一句,如果日志 table 具有与原始模型相同的字段,您可能会考虑使用外键或继承,这取决于您的程序逻辑。
您可以使用 django 包进行审计和历史记录,例如 overview 中的任何一个。
我成功使用了 django-simple-history。