Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在给定名称的Django中导入模型_Django_Model_Import - Fatal编程技术网

如何在给定名称的Django中导入模型

如何在给定名称的Django中导入模型,django,model,import,Django,Model,Import,给定一个标识Django模型的字符串,我必须获得类型为或无的关联对象 我将展示我的解决方案,它运行良好,但看起来很难看。我很高兴知道是否有更好的选择来获得同样的结果。有没有类似Django的捷径?谢谢 >>> from django.utils.importlib import import_module >>> model = 'sandbox.models.Category' >>> full_name = model.split("."

给定一个标识Django模型的字符串,我必须获得类型为
或无的关联对象

我将展示我的解决方案,它运行良好,但看起来很难看。我很高兴知道是否有更好的选择来获得同样的结果。有没有类似Django的捷径?谢谢

>>> from django.utils.importlib import import_module
>>> model = 'sandbox.models.Category'
>>> full_name = model.split(".")
>>> module_name = ".".join(full_name[:-1])
>>> class_name = full_name[-1]
>>> model = getattr(import_module(module_name), class_name, None)
>>> type(model)
<class 'django.db.models.base.ModelBase'>
来自django.utils.importlib import\u模块的
>>>
>>>model='sandbox.models.Category'
>>>全名=模型分割(“.”)
>>>module_name=“.”.join(全名[:-1])
>>>类别名称=全名[-1]
>>>model=getattr(导入模块(模块名称),类名称,无)
>>>类型(型号)

存在一个shorcut get\u模型

from django.db.models import get_model
这是它的签名:

def get_model(self, app_label, model_name, seed_cache=True):
在这里,您可以如何使用它:

>>> from django.db.models import get_model
>>> model = 'amavisd.models.Domain'
>>> app_label, _, class_name  = model.split('.')
>>> model = get_model(app_label, class_name)
>>> type(model)
class 'django.db.models.base.ModelBase'
例如,您可以使用以下代码

>>> from django.apps import apps
>>> apps.get_model('shop', 'Product')
<class 'shop.models.Product'>
>>> 
>>从django.apps导入应用程序
>>>apps.get_模型(“商店”、“产品”)
>>> 

我在django.db中找不到get_模型。django 2.0或1.11中的模型