💡
原文英文,约700词,阅读约需3分钟。
📝
内容提要
Caktus使用Django及其管理界面,但管理界面对数据库更改的记录有限。为此,他们采用django-pghistory工具,通过Postgres触发器跟踪数据更改。该工具适合大项目,但需谨慎选择跟踪模型,并正确使用EventModelAdmin。对于已有大表的项目,建议在更改前记录初始快照,以确保数据更改被准确记录。
🎯
关键要点
- Caktus使用Django及其管理界面,但管理界面对数据库更改的记录有限。
- django-simple-history工具适用于某些情况,但无法跟踪通过原始SQL直接在数据库中进行的更改。
- Caktus采用django-pghistory工具,通过Postgres触发器跟踪数据更改,适合大项目。
- 使用django-pghistory时需谨慎选择跟踪模型,建议仅在真正需要的模型上使用。
- django-pghistory的事件查看器在Django管理界面中显示所有跟踪模型的更改,适合小型项目。
- EventModelAdmin的使用需正确,避免在跟踪模型上使用,以免禁用模型的添加、修改和删除功能。
- 对于已有大表的项目,建议在更改前记录初始快照,以确保数据更改被准确记录。
- django-pghistory在更改数据时记录更改数据,而不是在更改前保存记录的副本。
❓
延伸问答
django-pghistory工具的主要功能是什么?
django-pghistory工具通过Postgres触发器跟踪和记录数据库中的数据更改,适合大项目使用。
使用django-pghistory时需要注意哪些事项?
使用django-pghistory时需谨慎选择跟踪模型,建议仅在真正需要的模型上使用,并注意在模式更改时需要移除和重新添加触发器。
如何在Django中正确使用EventModelAdmin?
EventModelAdmin应仅用于自定义事件的模型管理类,而不是用于被跟踪的模型,以避免禁用模型的添加、修改和删除功能。
对于已有大表的项目,如何确保数据更改被准确记录?
建议在更改前记录初始快照,以确保数据更改被准确记录,django-pghistory会在更改时记录更改数据。
django-simple-history与django-pghistory有什么区别?
django-simple-history适用于某些情况,但无法跟踪通过原始SQL直接在数据库中进行的更改,而django-pghistory可以跟踪所有数据更改。
如何在Django设置中禁用所有事件查看器?
可以通过在Django设置文件中添加PGHISTORY_ADMIN_ALL_EVENTS = False来禁用所有事件查看器。
🏷️
标签
➡️