我正在创建一个简单的脚本,用于为给定的Django模型生成灯具数据。我无法弄清楚如何创建一个接受用户输入的导入语句,以允许我对所选模型执行实际的逻辑。
我尝试了imp
,importlib.util.spec_from_file_location
,
importlib.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
。
答案 0 :(得分:0)
这是错误的方法。无需摆弄输入内容或动态构造名称。使用Django提供的功能来查找模型:
from django.apps import apps
model = apps.get_model(app, model)
print(model.objects.all())