【发布时间】:2014-04-07 09:48:18
【问题描述】:
我正在尝试使用 django 创建多模型左连接
这是我的模型
class LookupTiming(models.Model):
day = models.CharField(max_length=7)
time_1 = models.TimeField()
time_2 = models.TimeField()
class Meta:
db_table = u'lookup_timing'
class Streets(models.Model):
name = models.CharField(max_length=50)
point = models.GeometryField(null=True, blank=True)
objects = models.GeoManager()
class Meta:
db_table = u'streets'
def __unicode__(self):
return '%s' % self.name
class StreetTimings(models.Model):
street= models.ForeignKey(Streets)
lookuptiming = models.ForeignKey(LookupTiming)
class Meta:
db_table = u'street_timings'
这是我创建的查询
Streets.objects.filter(streettimings__isnull=True).filter(streettimings__lookuptiming__isnull=True).values('id')
这是上述查询的 sql 输出
SELECT "streets"."id" FROM "streets"
LEFT OUTER JOIN "street_timings" ON ( "streets"."id" = "street_timings"."street_id" )
LEFT OUTER JOIN "street_timings" T3 ON ( "streets"."id" = T3."street_id" )
WHERE ("street_timings"."id" IS NULL AND T3."lookuptiming" IS NULL)
但我想要以下查询
select st.id from streets st
LEFT JOIN street_timings timing on timing.street_id = st.id
LEFT JOIN lookup_timing lt on lt.id = timing.lookuptiming_id
所以问题是,django 查询完全忽略了 lookuptiming 模型。我想创建以下联接
Streets(id) = StreetTimings (street_id)
LookupTiming (id) = StreetTimings (lookuptiming_id)
如何为多个模型创建左连接?
谢谢
【问题讨论】:
标签: python django django-queryset