3

次のような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)

同様のルックアップクエリを実現する方法を説明しているので、リレーションシップにまたがるルックアップと呼ばれるDjangoドキュメントのこのセクションを確認することをお勧めします。

于 2011-05-22T15:29:32.160 に答える