2013-03-07 53 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

相关问题