Colin Copeland:使用django-pghistory跟踪Django模型更改的技巧

Colin Copeland:使用django-pghistory跟踪Django模型更改的技巧

💡 原文英文,约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来禁用所有事件查看器。

➡️

继续阅读