我有一个 Django 应用程序,其中包含客户和多个与这些客户相关联的用户,我想将该系统迁移到分层的多租户架构。
分层部分
客户可以递归地包含其他客户。例如,客户 A 包含 客户 B 和 客户 C。如果用户 客户 A 登录系统,用户将看到 客户 B 和 客户 C 的数据。如果 客户 B 的用户登录系统,则用户只能看到 客户 B 的数据。
多租户部分
我希望将所有客户的数据存储在单独的模式中。但是有一些数据与客户无关,因此我希望将这些数据存储在“public”模式中。
当我研究使用 Django 构建多租户应用程序时,我看到了这部分内容:
def set_tenant_schema_for_request(request):
schema = tenant_schema_from_request(request)
with connection.cursor() as cursor:
cursor.execute(f"SET search_path to {schema}")
然而,为了应用我之前提到的层级示例,我必须同时访问多个模式。我能做到吗?还是有其他实现架构的方法?