是否可以使用变量作为模型名称来查询数据库?

时间:2018-12-11 23:57:34

标签: python django django-models

我在一个应用程序中有很多模型。我需要基于相应的值对其进行迭代。例如:

for x in dictionary:
    h = x.get() #line to get value from dictionary 
    q = h.objects.get(user=name)

其中h是模型的字符串变量名称,q是所需的查询集

2 个答案:

答案 0 :(得分:0)

您必须创建其他字典,该字典将可能的输入字符串映射到实际模型类,例如,您要在User model中查询字符串'user'。因此,您创建了models_mapping = {'user':User}。然后在循环中,您可以编写

model = models_mapping[h] 
q = model.objects.get(user=name)

目前尚不清楚您在该词典中拥有什么以及x.get()是什么,但是希望这将指导您朝着正确的方向发展。

答案 1 :(得分:0)

django中提供了一个get_model方法,可以完成此任务。可以使用如下:

def get_model(self, app_label, model_name, seed_cache=True):