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在多个项目之间共享相同用户模型和数据库的最佳方式的主要内容,如果未能解决你的问题,请参考以下文章

在 Django 应用程序之间共享模型

在Django中对多个表进行筛选和排序

如何在多个 UITableView 单元格之间共享相同的 UIView

如何在两个 django 应用程序之间共享会话?

在多个 WCF 服务之间共享类

单个 Django 模型,多个表?