Pao*_*olo 4 django import model
给定一个标识Django模型的字符串,我必须获得类型的关联对象<class 'django.db.models.base.ModelBase'>或None.
我将展示我的解决方案,它运行正常,但看起来很难看.我很高兴知道是否有更好的选择来获得相同的结果.是否存在类似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'>
Run Code Online (Sandbox Code Playgroud)
存在shorcut get_model.
from django.db.models import get_model
Run Code Online (Sandbox Code Playgroud)
在这里它的签名:
def get_model(self, app_label, model_name, seed_cache=True):
Run Code Online (Sandbox Code Playgroud)
在这里你怎么能用它:
>>> 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'
Run Code Online (Sandbox Code Playgroud)
对于django 1.8+,您可以使用以下代码
>>> from django.apps import apps
>>> apps.get_model('shop', 'Product')
<class 'shop.models.Product'>
>>>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1932 次 |
| 最近记录: |