django中通过model名字获取model
2024-09-21 11:31:46
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')
<module 'django.contrib.auth.models' from '/opt/project/easyui/lib/python2.7/site-packages/django/contrib/auth/models.pyc'>
>>> app = get_app('auth')
# 获得一个app的所有model
>>> get_models(app)
[<class 'django.contrib.auth.models.Permission'>, <class 'django.contrib.auth.models.Group'>, <class 'django.contrib.auth.models.User'>
# 下面两种方式,得到的User是一样的, get_model需要两个参数,app_name和model_name
>>> get_model('auth', 'User')
<class 'django.contrib.auth.models.User'>
>>> from django.contrib.auth.models import User
>>> User
<class 'django.contrib.auth.models.User'>
>>> get_model('auth', 'User') == User
True
>>> u = get_model('auth', 'User')
>>> u.objects.all()[0]
<User: root>
django1.7, 可以使用上面的方法,也可以用新增加的django.apps来获取
>>> from django.apps import apps
>>> apps.get_app_config('auth')
<AuthConfig: auth>
# 注意得到的结果是迭代器(iterator)
>>> auth = apps.get_app_config('auth')
>>> auth.get_models()
<generator object get_models at 0x31422d0>
>>> for i in auth.get_models():
... print i
...
<class 'django.contrib.auth.models.Permission'>
<class 'django.contrib.auth.models.Group'>
<class 'django.contrib.auth.models.User'>
>>> auth.get_model('User')
<class 'django.contrib.auth.models.User'>
>>> User = auth.get_model('User')
>>> User.objects.all()[0]
<User: root>
注意,django1.7之前的版本没有django.apps
>>> import django
>>> django.get_version()
'1.6.5'
>>> from django.apps import apps
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ImportError: No module named apps
最新文章
- cache manifest 格式
- Python之异常追踪模块:traceback
- JS脚本文件的位置对页面加载性能影响以及无阻塞脚本(javascript)模式
- UWP开发入门(十六)——常见的内存泄漏的原因
- Fix Internet Explorer Crashes with SharePoint 2013 Online Presence Indicators
- 我对WindowsPhone8的一些反大众看法.
- lesson1:压测普通网页
- cf442B Andrey and Problem
- 【小白的java成长系列】——顶级类Object源代码分析
- [数据结构]Splay简介
- .bat文件设置IP、DNS
- django.db.utils.OperationalError: (1045, ";Access denied for user &#39;root&#39;@&#39;localhost&#39; (using password: ...
- Python 字符串拼接 sql ,造成 sql 注入例子
- 《Java程序设计》win10系统学前准备
- 日志log4cxx 封装、实例讲解、配置文件log4cxx.properties
- linux上安装telnet服务
- [uEnv.txt]在uEnv.txt文件中使用if语句实现Image/dtb文件切换
- P2617 Dynamic Rankings
- python碎片记录(三)
- NOI2005 维护数列(splay)
热门文章
- 【C语言】推断一个数的奇偶(位操作)
- IntelliJ 15 unmapped spring configuration files found
- HR筒子说:程序猿面试那点事
- ExtJS4 根据分配不同的树形菜单在不同的角色登录后
- 不用库(框架),自己写ajax
- Linux经常使用的命令(十) - nl
- SAP ABAP规划 SY-REPID与SY-CPROG差额
- Akka.net开发第一个分布式应用
- 折返(Reentrancy)VS线程安全(Thread safety)
- Path和ClassPath差异