gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-05 00:04:35 25 4
gpt4 key购买 nike

给定一个标识 Django 模型的字符串,我必须获得类型 <class 'django.db.models.base.ModelBase'> 的关联对象或无。

我将展示我的解决方案,它工作正常但看起来很难看。我很高兴知道是否有更好的选择来获得相同的结果。是否存在类似 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'>

最佳答案

存在一个快捷方式 get_model。

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'

对于 django 1.8+您可以使用以下代码
>>> from django.apps import apps
>>> apps.get_model('shop', 'Product')
<class 'shop.models.Product'>
>>>

关于django - 如何在给定名称的 Django 中导入模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5542753/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com