如何在Django中将字符串转换为调用模型的名称?

时间:2018-10-26 13:58:39

标签: python django django-models django-views

view.py

from .models import Banana, Mango
list = request.GET['fruit[]']
for x in list:
    conn = x.objects.all()
    print(conn.name)

在html文件中: 我使用复选框选择“芒果”和“香蕉”,然后view.py获得复选框的值。然后我要选择用户选择的模型。

当我运行此代码时,它会出现 / search的AttributeError 'str'对象没有属性'objects'。

在那段代码中,我想在我的模型中返回对象模型的名称值。py

如何替换List中的字符串以调用Django中的对象模型?

2 个答案:

答案 0 :(得分:2)

将模型类本身放在列表中...

from .models import Banana, Mango

lst = [Banana, Mango]  # do not call variable 'list'
# ...

...,您完全不需要进行任何字符串到模型的转换。

答案 1 :(得分:2)

如果必须从str值加载模型,请使用django.apps.get_model()帮助器

from django.apps import apps

Model = apps.get_model('app_name', 'model_name')
for element in Model.objects.all():
    print(element)