2013-03-07 49 views
0

我有兩個型號第一個元素:通過ForeignKey的

Cars(models.Model): 
many-many fields 

Pictures(models.Model): 
car = models.ForeignKey(Cars, related_name='pictures') 
img-field, etc 

如何讓意見轎車的第一張圖片(它的一個畫廊,很多汽車,我需要先預覽圖片)?我使用:

car = Cars.objects.all()[:6].values('id', 'pictures__image') 

在DB我有一個汽車行駛4張圖片,視圖返回4個字典具有相同ID和不同的圖像,但我需要一個ID - 一個圖片。這個怎麼做? (不是OneToOneField,因爲有一輛車的許多照片)。

感謝

+0

車= Cars.objects.all(): 1] .values('id','pictures__image')。order_by('id') – catherine 2013-03-07 18:08:56

+0

@catherine它返回1'汽車',但我需要6.和每張車的一張圖片 – tim 2013-03-07 18:16:23

+0

啊..ok,我誤解了你的題。我會嘗試找到 – catherine 2013-03-07 18:26:55

回答

1

你可以這樣做:

class Car(models.Model): 
    @property 
    def default_picture(self): 
     try: 
      return self.pictures.all()[:1][0] 
     except IndexError: 
      return None 

然後,當你運行你的汽車的查詢,你可以這樣做:

cars = Car.objects.all().values('id', 'default_picture__image') 
+0

+1的解決方案,但編輯它,'pictures_set'將不起作用,他已定義related_name。? – Ahsan 2013-03-07 18:35:00

+0

啊。接得好。 – Brandon 2013-03-07 18:35:34

+0

'無法將關鍵字'default_picture'解析爲字段'。選擇是:many-fields,但不存在'default_picture' – tim 2013-03-07 19:03:20

相關問題