Допустим, у меня есть следующие Джанго модели:Запрос модели Джанго, используя имя модели входной строки
class ModelB(models.Model):
title = models.CharField(max_length=20)
class ModelD(models.Model):
name = models.CharField(max_length=20)
В Джанго ОРМ, я пытаюсь прочитать строку которая будет имя модель, и используйте его для запроса. Что-то вроде этого:
>>b = 'ModelB'
>>b.objects.all()
Это, очевидно, не работает, так как это строка. Я посмотрел на 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'}
>>>
Но я не знал, как поступить дальше отсюда!
'apps' доступно в версии 1.7, на самом деле. Кроме того, 'apps' является объектом в' django.apps', поэтому вам нужно 'from django.apps import apps; apps.get_model (...) '. – knbk
@knbk, заметил это. спасибо за исправление. –