mysql - Django子查询问题 "Subquery returns more than 1 row"

标签 mysql django-models mysql-error-1242

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

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/

相关文章:

java - 用于选择表名的 SQL 查询

php - SQL SELECT 问题

php - WHERE id IN 在 UPDATE 中不起作用

python - Django 基于类的 CreateView 中的表单集

mysql - MySQL 出现错误#1242

PHP选择2个日期之间的数据

mysql - 输出组与条件语句连接

mysql,一个用户删除,另一个用户更新,谁会赢?

Django 向 GROUP BY 子句添加一个额外的字段