假设我有以下型号:
class ProductImage(models.Model):
image = models.ImageField('Product image', null=True,blank=True)
view = models.CharField(max_length=2, choices=VIEW_TYPES, default='FR', null=True,blank=True)
description = models.CharField(max_length=125, blank=True, null=True)
def __str__(self):
return self.view + "-" + self.image.url
我有以下查询集:
allProductImages = ProductImage.objects.all()
如何为所有对象提取MEDIA_URL +路径+文件名(例如/media/image.jpg)
这是我已经尝试过的(从之前的queryset语句开始):
urlValues = allImages.values('image')
<QuerySet [{'image': 'greenSwatch.jpg'}, {'image': 'blueSwatch.jpg'}, {'image': '3037-outer-black.jpg'}, {'image': '3037-outer-black.png'}]
我正在努力获得以下内容:
<QuerySet [{'image': '/media/path/greenSwatch.jpg'}, {'image': '/media/path/blueSwatch.jpg'}, {'image': '/media/path/3037-outer-black.jpg'}, {'image': '/media/path/3037-outer-black.png'}, {'image': '/media/path/3037-inner-blue.png'}, {'image': '/media/path/3037-outer-green.png'}, {'image': '/media/path/3037-outer-blue.png'}]>
另外,我知道没有指定upload_to参数,但根据Django 1.10的docs,这是可选的
我正在运行Django 1.10 + Python 3.5
答案 0 :(得分:2)
p.image.url
为您提供图像的完整URL,将p作为ProductImage实例给出。既然你有一个查询集,你只需要迭代;你不应该使用values
。
allProductImages = ProductImage.objects.all()
image_urls = [p.image.url for p in allProductImages]
答案 1 :(得分:1)
image.url将为您提供文件的绝对路径