django中通过model名字获取model

django1.6, 通过字符串和get_app、get_model获得对应的object

只需要两行代码:
from django.db.models import get_model
get_model('auth', 'User')

下面是详细的过程展示:

>>> from django.db.models import get_app, get_models, get_model
# auth是django自带的app, get_app需要一个参数:app_name
>>> get_app('auth')        

>>> app = get_app('auth')
# 获得一个app的所有model
>>> get_models(app)   
[, , 

# 下面两种方式,得到的User是一样的, get_model需要两个参数,app_name和model_name
>>> get_model('auth', 'User')

>>> from django.contrib.auth.models import User
>>> User

>>> get_model('auth', 'User') == User
True
>>> u = get_model('auth', 'User')   
>>> u.objects.all()[0]

django1.7, 可以使用上面的方法,也可以用新增加的django.apps来获取

>>> from django.apps import apps
>>> apps.get_app_config('auth') 

# 注意得到的结果是迭代器(iterator)
>>> auth = apps.get_app_config('auth')
>>> auth.get_models()

>>> for i in auth.get_models():
...  print i
... 



>>> auth.get_model('User')         

>>> User = auth.get_model('User')
>>> User.objects.all()[0]

注意,django1.7之前的版本没有django.apps

>>> import django
>>> django.get_version()
'1.6.5'
>>> from django.apps import apps
Traceback (most recent call last):
  File "", line 1, in 
ImportError: No module named apps

转载于:https://www.cnblogs.com/xupeiyuan/p/get_model_by_string.html

你可能感兴趣的:(python,javascript,数据库)