模型是否可能知道哪个租户正在使用它?

时间:2019-11-06 22:30:47

标签: django multi-tenant

我正在提供SaaS,主要是作为Django仪表板和自定义管理面板。使用租户,每个共享一个数据库的客户都有一个架构。我遇到的问题是,客户应该能够通过管理页面创建对象,并且对象应该创建包含有关租户信息的URL。例如,客户Y的网址为Y.xzxzxz.com,客户X的网址为X.xzxzxz.com。具有相同前缀的多种类型的网址。当前,客户必须手动输入客户前缀。 Models类是否可能知道正在使用哪个模式?

2 个答案:

答案 0 :(得分:0)

实际上根本不清楚您要问什么。但是我猜测您想知道模型存在于多个数据库中。

您的settings.py将可能具有DATABASE键,例如:

DATABASES = {
    'default': 'postgres://user:pass@localhost:5432/default',
    'tenant_1': 'postgres://user:pass@localhost:5432/tenant_1',
}

因此,一旦保存了模型,就可以通过执行以下操作来确定模型存在的数据库:

instance = YourModel.objects.create()
print(instance._state.db)
# Prints "default" or "tenant_1" depending on which database its in

relevant docs here

答案 1 :(得分:0)

我从django.db导入了Connection,然后使用了connection.get_tenant()。name,我得到了我想要的东西。