说明:
我有一个通用功能
def gen(model_name,model_type):
objects = model_name.objects.all()
for object in objects:
object.model_type = Null (Or some activity)
object.save()
我怎样才能实现上述目标?可能吗?
说明:
我有一个通用功能
def gen(model_name,model_type):
objects = model_name.objects.all()
for object in objects:
object.model_type = Null (Or some activity)
object.save()
我怎样才能实现上述目标?可能吗?
我会使用get_model
:
from django.db.models import get_model
mymodel = get_model('some_app', 'SomeModel')
从 Django 1.7 开始,django.db.models.loading
不推荐使用(将在 1.9 中删除)以支持新的应用程序加载系统。1.7 文档为我们提供了以下内容:
$ python manage.py shell
Python 2.7.6 (default, Mar 5 2014, 10:59:47)
>>> from django.apps import apps
>>> User = apps.get_model(app_label='auth', model_name='User')
>>> print User
<class 'django.contrib.auth.models.User'>
>>>
如果您传入“ app_label.model_name ”,则可以使用内容类型,例如
from django.contrib.contenttypes.models import ContentType
model_type = ContentType.objects.get(app_label=app_label, model=model_name)
objects = model_type.model_class().objects.all()
Django 1.5 的完整答案是:
from django.db.models.loading import AppCache
app_cache = AppCache()
model_class = app_cache.get_model(*'myapp.MyModel'.split('.',1))