Django:如何在保存(用户udates)原始文件之前在新表中保存记录

时间:2018-04-14 18:20:05

标签: python django logging django-models database-backups

情境:

  • 开发问题解答应用
  • 以下是不同的用户可以回答的问题。
  • 每个问题可能有几个要响应的字段(2个或3个是/否复选框),任何用户都可以随时更新任何字段。

问题:

每次记录得到任何更改时,我都需要在不同的日志表中保留日志(带有时间和用户名)。

日志表只是原始模型(例如ChangeLogModel)的外观,只有2个额外的字段作为logDate和ChangingUser。 这将帮助我检查日志并在任何特定日期查找问题的状态。

可能的解决方案:

  • 使用信号( ...不习惯信号,缺乏详细的教程,文档也不详细

  • 在做任何" .save()"之前进行备份。 ( ......知道怎么做

  • 安装任何外部应用程序( ...尝试避免安装任何应用程序

要点: 基本上我要求的是一个日志表,其中的状态是'在记录" form.save()"之前,原始记录/行/元组将保存到另一个表(即logTable)中触发。 因此,每次更新记录时,LogTable都会获得一个带有日期戳的新行。

2 个答案:

答案 0 :(得分:0)

我认为最好的方法就是直接做到这一点。您可以在日志之后保存用户的答案,用database transaction包装并在出现问题时回滚。 顺便说一下,如果日志表与您考虑使用外键或继承的原始模型具有相同的字段,则取决于您的程序逻辑。

答案 1 :(得分:0)

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

我使用django-simple-history取得了成功。