2011-05-22 117 views
2

我有三個相關的車型,如Django的子查詢問題「子查詢返回多個1行」

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')

錯誤,你能不能給我任何想法我怎麼能achive在Django此查詢?

謝謝

回答

1

我不知道爲什麼你這樣做是複雜的事情。你可以擺脫線沿線的東西:

對於模型City的給定實例city,你可以得到所有Districts這樣:

District.objects.filter(county__city=city)

您可能想通過這種在Django文檔中稱爲Lookups that span relationships,因爲它解釋瞭如何實現類似的查詢查詢。

+0

非常感謝您的幫助!我一定會瀏覽這個文檔。 – brsbilgic 2011-05-22 15:51:41