Django:从字符串中获取模型而不使用app\u lab

2024-03-28 22:18:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个Django网站,它使用两个数据库。辅助数据库的模型已添加到相同的型号.py但是每个都有一个元类来处理数据库路由。你知道吗

class Meta:
        app_label = 'database_name'
        managed = False
        db_table = 'table_name'

现在,我试图通过使用字符串来获取模型,但是我看到/尝试过的每个示例似乎都需要使用app\u标签。你知道吗

apps.get_model('scripts', 'model_example') 使用所有内容所在的实际应用程序的应用程序名称会导致LookupError: App 'scripts' doesn't have a 'model_example' model.

apps.get_model('database_name', 'model_example') 使用实际模型在其元类中的app\标签会导致LookupError: No installed app with label 'database_name'.

我似乎也不知道如何使用AppConfig或ContentType解决这个问题。你知道吗

要明确的是:我没有一个应用程序的数据库名称,它只用于路由。我正在寻找一种通过使用字符串检索模型的方法,get\u model()函数似乎需要一个实际存在的应用程序。

有什么方法可以让我得到模型还是需要结构上的改变?如果是,有什么变化?你知道吗

编辑:
我可以用globals()['model_example']来做这件事,但是我已经读过很多遍了,应该尽量避免使用globals。正因为如此,我还在寻找另一个解决方案。你知道吗


Tags: apps字符串name模型数据库app应用程序路由