使用... objects.raw进行django查询

时间:2014-01-26 04:30:12

标签: django django-models inner-join

如何使用此模型对两个模型进行查询  model.objects.raw(...)
并且进入sql查询的INNER JOIN与另一个模型(表)这是可能的

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

我需要用他的categoria的名字打印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)

1 个答案:

答案 0 :(得分:1)

从ORM中获取对象会自动执行所需的任何连接,并返回可用于跟踪关系的对象(模型实例)。

如果您只是获取所有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']))