基于登录的Django 1.8用户分离数据库设置

时间:2016-04-24 22:06:13

标签: django postgresql django-models postgresql-9.4

我希望在Postgresql 9.4级别(因此我不会使用Django权限系统)成为数据所有者和其他用于读取访问的角色。

换句话说: PG角色data_owner(内容管理器) - > Django集团出版社(RW) PG角色data_user(内容阅读器) - > Django group Subscribers(R)

数据所有者角色(通过发布者组)负责向应用提供数据,而其他用户只是具有只读访问权限的检索器。

需要为所有用户读取一些像活动流这样的表。

然后方法是:

  • 内容表:角色data_owner rw,其他r
  • 功能表:所有rw

可选:

  • 配置表:role system_owner rw,ohters r

其中r表示选择权限,w表示插入,更新和删除权限。

如何更好地实现这一目标?

1 个答案:

答案 0 :(得分:0)

最简单的方法可能是在settings.py中定义两个数据库:

DATABASES = {
    'default': {
        'NAME': 'my_db',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'data_owner', 
        'PASSWORD': 's3krit'
    },
    'users': {
        'NAME': 'my_db',
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'USER': 'data_user',
        'PASSWORD': 'priv4te'
    }
}

然后,在视图中,使用 using()功能访问模型,如下所示:

# This will run on the 'default' database.
objects.all()

# So will this.
objects.using('default').all()

# This will run on the 'users' database.
objects.using('users').all()

此外,您可以选择要保存的数据库,如下所示:

my_object.save(using='_users')

来源:https://docs.djangoproject.com/en/1.8/topics/db/multi-db/

还有其他建议吗?

相关问题