【发布时间】:2014-07-10 21:13:28
【问题描述】:
我需要进行查询,但这并不简单,因为我不能使用 django 的 Manager.raw()。 这是我的模型:
from django.db import models
from orion.apps.repuestos.models import Repuesto
from django.contrib.auth.models import User
from orion.apps.coches.models import Coche
from orion.apps.mecanicos.models import Mecanico
# Create your models here.
class Salida(models.Model):
repuesto = models.ForeignKey(Repuesto)
disponibilidad_actual = models.IntegerField(max_length=20)
cantidad_salida = models.IntegerField(max_length=20)
gasto = models.DecimalField(max_digits=10, decimal_places=2, blank=False)
created = models.DateTimeField(auto_now_add=True)
coche = models.ForeignKey(Coche)
class Remito(models.Model):
mecanico = models.ForeignKey(Mecanico)
created = models.DateTimeField(auto_now_add=True)
user = models.ForeignKey(User)
observacion = models.TextField(max_length=300, blank=False)
class Remito_Salida(models.Model):
remito = models.ForeignKey(Remito)
salida = models.ForeignKey(Salida)
我尝试使用此功能进行查询。我需要获取自与特定 Mecanico 关联的特定日期以来的所有 Salida。
在我看来,我得到了这个代码:
def dictfetchall(cursor):
"Returns all rows from a cursor as a dict"
desc = cursor.description
return [
dict(zip([col[0] for col in desc], row))
for row in cursor.fetchall()
]
def my_custom_sql(fi):
cursor = connection.cursor()
cursor.execute('SELECT repuestos_repuesto.nombre, coches_coche.unidad, mecanicos_mecanico.nombres, mecanicos_mecanico.apellidos, salidas_salida.created, salidas_salida.gasto FROM salidas_salida, salidas_remito_salida, salidas_remito, coches_coche, mecanicos_mecanico, repuestos_repuesto WHERE salidas_salida.repuesto_id = repuestos_repuesto.id AND salidas_remito_salida.remito_id = salidas_remito.id AND salidas_remito_salida.salida_id = salidas_salida.id AND salidas_remito.mecanico_id = mecanicos_mecanico.id AND coches_coche.id = salidas_salida.coche_id AND salidas_salida.created >= "fi" AND mecanicos_mecanico.id = 1;')
row = dictfetchall(cursor)
return row
fi 是一个日期。 1 是 mecanico 的 ID。
我收到了这个错误:
ProgrammingError
attrib dows not exists «fi»
LINE 1: ...das_salida.coche_id AND salidas_salida.created >= "fi" AND ...
^
我正在使用 django 1.6 和 postgresql 9.1
我该如何解决这个问题?
【问题讨论】:
标签: python sql django postgresql