创建一个接受变量的自定义导入语句,用于导入Django模型

时间:2019-05-08 08:44:16

标签: django django-models

我正在创建一个简单的脚本,用于为给定的Django模型生成灯具数据。我无法弄清楚如何创建一个接受用户输入的导入语句,以允许我对所选模型执行实际的逻辑。

我尝试了impimportlib.util.spec_from_file_locationimportlib.import_module__import__Create an import statement using variable "interpolation"

我最近得到的是:

def import_function(app, model):
    exec(f"from {app}.models import {model}")
    exec(f"print({model}.objects.all())") #This works.
import_function("home", "Person")

我的想法是:我创建一个名为“ fixture.py”的模块。该模块中有一个自定义导入功能。我将模块导入到创建的环境中 python manage.py shell,以消除修改PATH的需要。 然后,我使用fixture.import_function(app, model)调用该函数。

我设法以这种方式生成了夹具数据,但是仅当我对import语句(即from home.models import Person)进行硬编码时。 #fixture generating logic

1 个答案:

答案 0 :(得分:0)

这是错误的方法。无需摆弄输入内容或动态构造名称。使用Django提供的功能来查找模型:

from django.apps import apps
model = apps.get_model(app, model)
print(model.objects.all())