Abh*_*hek 4 python django django-orm
假设我有以下django型号:
class ModelB(models.Model):
title = models.CharField(max_length=20)
class ModelD(models.Model):
name = models.CharField(max_length=20)
Run Code Online (Sandbox Code Playgroud)
在django ORM中,我正在尝试读取一个字符串,该字符串将是模型的名称,并使用它来查询.像这样的东西:
>>b = 'ModelB'
>>b.objects.all()
Run Code Online (Sandbox Code Playgroud)
这显然不起作用,因为它是一个字符串.我查看了ContentType,但我不确定它在我的场景中会有什么帮助.有什么建议?
我也尝试过像这样的get操作Contentype:
>>> z = ContentType.objects.get(model='modelb')
>>> z
<ContentType: model b>
>>> z.__dict__
{'model': u'modelb', '_state': <django.db.models.base.ModelState object at 0x7f195346c150>, 'id': 14, 'app_label': u'testapp'}
>>>
Run Code Online (Sandbox Code Playgroud)
但我不知道如何从这里继续前进!
Rod*_*ier 10
如果您使用Django <1.7,我认为您可以这样做.
from django.db.models.loading import get_model
z = ContentType.objects.get(model='modelb')
ModelB = get_model(z.app_label, 'ModelB')
Run Code Online (Sandbox Code Playgroud)
对于django> = 1.7,你可以
from django.apps import apps
z = ContentType.objects.get(model='modelb')
ModelB = apps.get_model(z.app_label, 'ModelB')
Run Code Online (Sandbox Code Playgroud)
然后你可以ModelB用来查询.
| 归档时间: |
|
| 查看次数: |
2169 次 |
| 最近记录: |