如何在具有只读访问权限的现有数据库上实现django admin?

时间:2011-06-09 12:45:42

标签: django django-models django-database

我想使用Django管理员浏览和现有数据库,但我想确保我或Django不会对此数据库进行任何修改。

出于这个原因,我认为我应该使用两个数据库,一个是只读的,一个是存储其他django表,一个是我有读写访问权限。

我知道如何在settings.py中定义多个数据库,但我不知道如何强制django为特定模型使用另一个数据库。

2 个答案:

答案 0 :(得分:2)

作为manji答案的补充 - 您还可以使用数据库VIEW并将某些表公开为只读表。使用带有Django的VIEW是一种强大的技术,它允许像Django模型一样暴露出非常复杂的查找。

在您的情况下,您可以例如用VIEW镜像原始数据库中的相关表来创建额外的数据库,并创建额外的Django项目,只为这些表启用了admin - 或者这些行中的某些东西(你知道你的用例比我好)。

答案 1 :(得分:1)

您可以使用Automatic database routing为每个模型配置读/写操作数据库

或者

您还可以使用查询集的using参数自定义管理界面读/写操作数据库(Exposing multiple databases in Django's admin interface)

在这两种情况下,将读/写数据库设置为默认值(django模型将保存在那里)并显式地将查询路由到您的模型的只读数据库。