2014-10-10 74 views
0
class Quarter(models.Model): 
    ... 


class House(models.Model): 
    quarter = models.ForeignKey(Quarter, related_name='houses') 


class FloorRange(models.Model): 
    house = models.ForeignKey(House, related_name='floor_ranges') 
    is_commercial = models.BooleanField(default=False) 

幫我找得到Quarter對象,其中houses有一個或多個floor_rangesis_commercial=TrueDjango的查詢集與過濾相關對象

回答

0

首先獲得所有相關的季度房屋houses的最佳途徑。

houses = House.objects.filter(quarter=quarter) 

然後過濾結果至那些至少有一個樓層範圍與is_commercial=True。爲此,請使用相關名稱floor_ranges和雙下劃線__來覆蓋該關係。

houses = houses.filter(floor_ranges__is_commercial=True) 

最後,使用distinct()防止重複結果的房子有多個地板is_commercial=True範圍。

houses = houses.distinct() 
+0

謝謝你,我想在一行的更好:House.objects.filter(季=季度,floor_ranges__is_commercial = FALSE).distinct() – 2014-10-15 16:55:39

+0

當然,我把它分解成多行,使之更容易說明。 – Alasdair 2014-10-15 16:56:37