2014-01-26 29 views
0

我怎樣才能讓使用此 model.objects.raw(...)兩個型號
和成sql查詢一個查詢內與其他型號JOIN(表),這是可能的Django的查詢與... objects.raw

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

我需要他的categoria的名字從ORM打印establecimiento的名字

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

請張貼您的模型。你需要使用django ORM。 'objects.raw'不適用於這樣的查詢。 –

+0

我用(model.objects.raw)查詢,因爲我有ORM django的問題,併爲此原因。我試圖做一個SQL查詢到... objects.raw 什麼是最好的解決方案? 您可以幫助我 – user3236034

回答

1

獲取對象會自動完成任何聯接必需的,將返回模型的對象(實例),它你可以使用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