hor*_*ora 2 database django database-design django-models
我想为我的Django应用程序创建一个类似于Django admin的"Recent Actions"的功能,以便将历史信息存储在我的其他模型中.
例如,我说我有两个名为Book and Author的模型.我希望有一个第三个模型来存储信息,例如对模型中的给定对象执行的操作(添加,修改,删除等)由谁和何时执行.
谁,何时以及行动都很简单,我只是不确定如何存储有关执行操作的对象的信息.
我最初的想法是拥有一个存储这些信息的"交易"模型,我的Book和Author模型都可以与之建立ForeignKey关系.但是,如果我删除了给定的书或作者,那么它的事务历史记录也会被删除,而且我没有记录该对象确实被删除了.
我一直在考虑其他可能的解决方案,但我想我首先会在这里要求更多有经验的意见.我该如何处理这个问题以及它有哪些合理的解决方案?
谢谢!
您可能想要查看django-reversion - 要么实现,要么为了自己的实现而从中学习.Django reversion通过保存有关更改的信息以及该时刻存在的项目的序列化副本来工作.这意味着您以后可以回忆起一个特定的项目并进行比较或恢复或其他任何事情.
如果您决定实施自己的自定义解决方案,我建议您使用Django的内置信号子系统.开箱即用的Django为您提到的内容提供了常见的信号,如模型创建,保存和删除.如果您发现需要,也可以添加自定义信号.
使用信号将允许您开发与Book/Author实现代码分开的"历史"代码,从长远来看,这将是一种资产(而不是在整个Book/Author代码中对历史代码进行串联).再次,django-reversion通过几乎完全用信号完成其工作,可以作为一个很好的参考.
| 归档时间: |
|
| 查看次数: |
713 次 |
| 最近记录: |