我的模特
class Despacho (models.Model):
bus=models.ForeignKey(Bus)
contador = models.IntegerField()
cerrado = models.BooleanField(editable=False)
class Bus(models.Model):
numero_bus=models.CharField(max_length=255,unique=True)
en_ruta = models.BooleanField(editable=False)
我需要一个查询来提取我保存总线的数据,然后输入一个 公交车的号码,我需要知道是否有发货 匹配搜索尝试执行以下查询
我的数据库是postgresql
d = Despacho.objects.raw('''SELECT * FROM operaciones_despacho WHERE operaciones_despacho.bus = '%s' AND operaciones_despacho.cerrado = '%s'
;'''%(bus.numero_bus,False))
错误:列operaciones_despacho.bus不存在
答案 0 :(得分:0)
首先在Django中,我们仅在罕见的情况下使用原始sql,因为它特别难以编写ORM查询。在这种情况下,编写ORM查询比原始查询更容易和更短。
Despacho.objects.filter(bus=bus).filter(cerrado=False)
在需要执行原始查询的极少数情况下,请注意使用原始params参数而不是字符串格式。编写原始查询的正确方法是
Despacho.objects.raw('''SELECT * FROM operaciones_despacho WHERE operaciones_despacho.bus = '%s' AND operaciones_despacho.cerrado = '%s'''' ,
[bus.numero_bus,False])
但我再次强调你不应该在这里使用原始查询,因为它是一个简单的ORM查询。