使用django model _meta来识别租户

时间:2016-03-01 09:10:35

标签: django orm

我需要选择一个特定的数据库来处理请求。选择取决于被命中的域名。换句话说,我需要实施多租户,每个租户都有一个单独的数据库。

现在,在处理请求时,我得到了我的应用程序的所有模型的列表,并设置模型的_meta以反映租户。像这样:

def my_request(request):
    all_models=apps.get_app_config('MY_APP_NAME').get_models()
    for modl in all_models:
        modl._meta.app_label = tenant_id

我配置了db_router,然后使用tenant_id选择数据库并返回该数据库。

这不是线程安全吗? Django是否为每个请求创建了一组新的模型(这些是类,而不是对象实例),或者只使用了一个副本?我知道有更好的方法可以解决问题,但我想知道我的评估是否正确,以上是错误。

0 个答案:

没有答案