2016-09-09 174 views
0

我使用Django 1.9和Python 2.7。Django - 遵循一個向後的ForeignKey和一個ForeignKey(查詢)

我的應用程序有四個模型。每次「旅行」由訪客選擇的幾個「步驟」組成,這些「步驟」涉及「地點」,其可能具有多個相關的「圖片」。

class Trip(models.Model): 
    title = models.CharField(max_length=140, blank=True) 

class Step(models.Model): 
    theplace = models.ForeignKey(ThePlace) 
    trip = models.ForeignKey(Trip) 

class ThePlace(models.Model): 
    name = models.CharField(max_length=200) 

class Picture(models.Model): 
    file = models.ImageField(upload_to="pictures") 
    slug = models.SlugField(max_length=100, blank=True) 
    theplace = models.ForeignKey(ThePlace, null=True, blank=True) 

我想找回這些都與一個特定的旅行所有的「圖片」對象,使用現有的「selectedtrip」查詢集:

selectedtrip = Trip.objects.filter(author=request.user)[0] 
pictures = selectedtrip.step_set.all().theplace.picture_set.all() 

的Django顯示以下錯誤: 「AttributeError的: 'QuerySet'對象沒有屬性'theplace'「 任何想法爲什麼?

回答

1

因爲all()返回一個queryset,它是一組項目; theplace是單個步驟上的屬性,而不是集合上的屬性。

執行此類查詢的方法是從要檢索的類開始,然後使用雙下劃線語法跟蹤查詢內的關係。所以:

Picture.objects.filter(theplace__step__trip=selectedtrip) 
+0

晶瑩剔透!非常感謝 ! –