我正在提供SaaS,主要是作为Django仪表板和自定义管理面板。使用租户,每个共享一个数据库的客户都有一个架构。我遇到的问题是,客户应该能够通过管理页面创建对象,并且对象应该创建包含有关租户信息的URL。例如,客户Y的网址为Y.xzxzxz.com,客户X的网址为X.xzxzxz.com。具有相同前缀的多种类型的网址。当前,客户必须手动输入客户前缀。 Models类是否可能知道正在使用哪个模式?
答案 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
答案 1 :(得分:0)
我从django.db导入了Connection,然后使用了connection.get_tenant()。name,我得到了我想要的东西。