跟踪更改 - Django

6 投票
3 回答
1663 浏览
提问于 2025-04-15 20:46

我有几个不同的模型,我想对它们进行跟踪并收集一些统计数据。

问题是如何记录这些模型随时间的变化。

我想到了几种不同的方法:

  • 在一个文本字段里存储日志,每次模型保存时打开并更新这个日志。
  • 或者把一个列表进行序列化(也就是“打包”),然后存储在文本字段里。
  • 将日志保存在硬盘上。

你们有什么建议吗?

3 个回答

1

我遇到过类似的情况,我们需要记录所有的变更历史。同时,我们还需要审计功能来追踪是谁做了这些更改,以及能够恢复到之前的状态。我们的方法是把这些信息存储在数据库里,这样看起来更合理。不过,考虑到你有大量的统计数据,或许用单独的文件来处理会更好。

无论如何,你应该使用一个通用的机制来记录模型的变更,而不是为每个模型单独编写代码。

可以看看这个链接: http://www.djangosnippets.org/snippets/1052/

1

我小学化学老师常说:“如果你不把它写下来,那就没发生过”,所以要把日志保存到文件里。

因为日志信息和你的应用数据是分开的(其实它是元数据),所以要把它们分开存储。你可以把日志记录到数据库表里,但要和你的模型区分开。

文本格式的pickle数据人类读起来很困难,二进制的pickle数据就更难了;所以最好用一种容易解析的格式来记录日志,这样数据就能轻松导入到分析软件中。

6

别重复造轮子了.. 用django-reversion来记录变更。

不过我建议把统计数据单独放到一个模型里。

撰写回答