Django在多个项目之间共享相同用户模型和数据库的最佳方式
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django在多个项目之间共享相同用户模型和数据库的最佳方式相关的知识,希望对你有一定的参考价值。
我有多个Django项目。每个人都有自己的应用程序。他们没有安装相同的应用程序。
它们之间的共同点是,它们应该使用和共享相同的自定义用户模型和数据库。
这是实现这一目标的正确方法吗?
谢谢!
答案
除非您将一个项目指定为自定义用户模型的“主”,否则这是一个非常棘手的问题。否则,您可能会针对同一数据库表进行竞争迁移。一旦确定哪个项目将成为主项目,非主项目应该在DATABASES
中有一个单独的条目,将它们连接到中央用户数据库
DATABASES = {
'default': ...
'users': {
'HOST': 'central-host.example.com',
'NAME': 'central-users',
...
}
}
DATABASE_ROUTERS = 'my_app.database_router'
在路由器中,您可以指定应从中央用户数据库中读取用户模型:
class Router(object):
def db_for_read(self, model, **hints):
if model.__name__ == 'CustomUserModel':
return 'users'
return 'default'
def db_for_write(self, model, **hints):
if model.__name__ == 'CustomUserModel':
return 'users'
return 'default'
以上是关于Django在多个项目之间共享相同用户模型和数据库的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章