内容提要
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时,选择性跟踪模型至关重要。虽然该工具能有效记录数据库中的所有更改,但在大型项目中,跟踪过多模型可能导致管理混乱。因此,建议仅在真正需要的模型上使用,以保持系统的高效性和可维护性。
EventModelAdmin的正确使用
在使用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来禁用所有事件查看器。