【发布时间】:2011-09-27 23:22:59
【问题描述】:
我一直在想这个问题,但我还没有想出解决方案。在 MySQL 上,我会创建一个 TRIGGER 以在发生更改时自动保存修订,并将更改值保存到数据库以跟踪修订。
我现在的问题是:如何在 Django 中的大多数模型中以更通用的方式实现这一点?现在,我只有 20 多个模型,而且还在快速增长。生成对象来存储所有这些项目将使我的模型至少乘以 2,而且似乎不是太理想。
有没有一种方法可以让我实现自动化,让它变得更智能、更简单?
【问题讨论】:
-
SQL 也是每个表的触发器和每个表的更改历史记录。既然你说的 Django 解决方案和 SQL 一样复杂,那么最大的问题是什么?
-
我是触发器的新手,尽我所能。我不知道你可以触发整个数据库。
-
"触发整个数据库?"这是什么意思?您的触发器将需要一个触发器和一个表,用于 SQL 模式中的每个表(或使用 Django 术语的“模型”)。这并不比在 Django 中实现它的明显方法简单。如果不是更简单,为什么要发布所有 SQL 代码?
-
我发布了 SQL 以证明在保存项目之前我需要一种循环方式,并将它们的先前状态和当前状态写入数据库中的表中。抱歉,如果这令人困惑,我还在学习 Django。
-
那么 SQL 完全没用,那么?您能否考虑将其删除并总结您想要的内容。 “我需要一种在保存项目之前循环并写入它们以前的状态和当前状态的方法”看起来清晰准确,没有大量 SQL 的混乱开销。简单地提供关于何时收集这些数据以及何时使用这些数据的用户故事有什么问题?为什么要发布 SQL?
标签: django database-design django-models