我有三个相关的模型,比如
class City(models.Model):
name = models.CharField(max_length=200, blank=False)
country = models.ForeignKey(Country,unique=False,null=False)
def __unicode__(self):
return self.name
class Meta:
ordering = ['name']
class County(models.Model):
name = models.CharField(max_length=500, blank=False)
city = models.ForeignKey(City,unique=False,null=False)
def __unicode__(self):
return self.name
class Meta:
ordering = ['name']
class District(models.Model):
name = models.CharField(max_length=500, blank=False)
county = models.ForeignKey(County,unique=False,null=False)
def __unicode__(self):
return self.name
class Meta:
ordering = ['name']
我想做的是获取指定城市的所有 Districts
。
我试过了:
District.objects.all().filter(county = County.objects.all().filter(city=City.objects.filter(id=4)))
但是,它会给出类似 OperationalError: (1242, 'Subquery returns more than 1 row')
你能告诉我如何在 django 中实现这个查询吗?
谢谢
最佳答案
我不确定您为什么这样做会使事情复杂化。您可以按照以下方式逃脱:
对于模型 City
的给定实例 city
,您可以通过这种方式获取所有 Districts
:
District.objects.filter(county__city=city)
您可能想要阅读 Django 文档中名为 Lookups that span relationships 的这一部分因为它解释了如何实现类似的查找查询。
关于mysql - Django子查询问题 "Subquery returns more than 1 row",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6088864/