2

给定一个 django 模型,我如何为它自动生成有效的导入?我有一个严格的内部函数(只有开发人员会使用它),它接受一个模型并返回一些关于它的信息。问题是,我不知道如何动态导入东西:

例如,我的应用程序结构可能是:

-myproject
    --books
    --music

和功能:

def my_func(Model):
    from appname.models import Model
    ## Rest of function here ##

有没有办法可以根据模型自动生成导入?我正在考虑访问 _meta 属性以获取 app_label,但显然,需要导入才能访问 Model._meta。任何想法将不胜感激。

4

3 回答 3

4

我认为get_model是你需要的。

from django.db.models.loading import get_model
model = get_model('appname', 'ModelName')

现在你可以这样做了。

objects = model.objects.all()
于 2012-11-13T06:23:38.290 回答
1

您可以使用 动态导入模块importlib,这允许您将包指定为第二个参数。

import importlib
mod = importlib.import_module('modulename', 'packagename')

如果您希望模块的名称与您的模型类匹配,您可以试试这个:

ModelClass.__name__
于 2012-11-13T05:41:30.330 回答
0

使用该__import__函数并将模型作为字符串传入。

def my_func(Model):
    modelVar = __import__("appname.models"+Model)
于 2012-11-13T05:38:44.217 回答