2014-01-26 4 views
0

Как я могу сделать запрос с двумя моделями, использующими этот model.objects.raw (...)
и в запросе SQL имеет внутреннее соединение с другой моделью (таблица) это возможноДжанго запрос с ... objects.raw

model.objects.raw(' 
SELECT  establecimiento.nombre, categoria.titulo 
FROM   establecimiento INNER JOIN 
         categoria ON establecimiento.categoria = categoria.id') 

мне нужно напечатать имя Establecimiento с именем своих CATEGORIA игровой

class Establecimiento(models.Model): 
    nombre = models.CharField(max_length = 140) 
    categoria = models.ForeignKey(Categoria) 
    ciudad = models.ForeignKey(Ciudad) 
    def __unicode__(self): 
     return self.nombre 



class Categoria(models.Model): 
    titulo = models.CharField(max_length = 140) 
+0

Пожалуйста, разместите ваши модели. Вам нужно использовать ORM django. 'objects.raw' не для таких запросов. –

+0

Я сделал запрос с (model.objects.raw), потому что у меня проблемы с ORM django и по этой причине. Я пытаюсь сделать это с помощью sql-запроса в ... objects.raw Какое лучшее решение ? Вы можете мне помочь – user3236034

ответ

1

Fetching объектами из ORM автоматически делает любой присоединяется требуется и будет возвращать объекты (экземпляры моделей), которые вы можете использовать t o следовать отношениям.

Если вы просто извлечь все ваши Establecimiento объектов, вы можете получить доступ к связанным Categoria объектам, например:

all_objects = Establecimiento.objects.all() 

for obj in all_objects: 
    print('Number: {} Category: {}'.format(obj.nombre, obj.categoria.titulo)) 

Или, если вы хотите получать только этих двух специфических свойств, используйте values, как это:

all_objects = Establecimiento.objects.values('nombre','ciudad__titulo') 
for obj in all_objects: 
    print('Number: {} Category: {}'.fromat(obj['nombre'],obj['ciudad__titulo'])) 
+0

Привет, Большое вам спасибо за помощь – user3236034

Смежные вопросы