3

我有三个相关的模型,比如

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 中完成这个查询吗?

谢谢

4

1 回答 1

1

我不确定你为什么这样做会使事情复杂化。您可以通过以下方式摆脱困境:

city对于模型的给定实例City,您可以通过Districts以下方式获取所有内容:

District.objects.filter(county__city=city)

您可能希望通过名为Lookups 的 Django 文档的这一部分来了解跨越关系,因为它解释了如何实现类似的查找查询。

于 2011-05-22T15:29:32.160 回答