我有多个Django项目。每个人都有自己安装的应用程序。他们没有安装相同的应用程序。
他们之间的共同点是,他们应该使用并共享相同的“自定义用户”模型和数据库。
哪个是完成此任务的正确方法?
谢谢!
答案 0 :(得分:0)
这是一个非常棘手的问题,除非您确切地指定一个项目作为自定义用户模型的“主”。否则,您可能会对同一个数据库表进行竞争性迁移。一旦确定哪个项目将成为主项目,则非主项目应该在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'