我正在创建一个API,它可以访问单个项目中的多个应用程序,并从所有这些应用程序中获取模型
为此,我尝试了以下方法:
def get(self, request, **kwargs):
m = request.GET['model']
depth = request.GET['depth']
print("model")
model = apps.get_model('masters', str(m))
obj1 = model.objects.all()
当我想从单个应用程序导入模型时,它工作正常,但在我的项目中,我有多个应用程序链接在一起,为此我尝试:
model = apps.get_model(['masters','dockets'], str(m))
但得到了一个错误TypeError: unhashable type: 'list'
.apps.get_model不接受列表,但是否有任何变通方案?
1条答案
按热度按时间pcrecxhr1#
如可在官方文档参考中看到https://docs.djangoproject.com/en/4.1/ref/applications/#django.apps.apps.get_model,
apps.get_model(app_label, model_name, require_ready=True)
方法有3个参数,其中app_label
和model_name
是字符串,require_ready
是可选的布尔值。因此,当您尝试为app_label
参数传递列表时,会出现错误。如果你只有2或3个应用程序,一个简单的选择,你将使用一个尝试,除了这样,
然而,如果您要处理许多应用程序,这显然是不可行的。
另一种方法是修改请求,使其同时包含应用标签和模型名称。
否则,我建议您创建一个注册表,其中包含来自不同应用程序的所有模型,这些模型可以在这里访问,然后从该注册表中获取模型。