django查询中ImageField的URL

时间:2012-08-28 15:26:11

标签: django django-queryset django-models

我有一个模型ModelA,其字段类型为ImageField。现在,我希望一次性获取所有图像的网址。

所以,当我做ModelA.objects.all()。values()时,我希望得到类似的内容:

[{"id":1, "image_field": "/media/upload_folder/xyz.jpg"}, {...}]

现在,它提供了类似的内容:

[{"id":1, "image_field": "upload_folder/xyz.jpg"}, {...}]

我错过了什么吗?

我该怎么办?

2 个答案:

答案 0 :(得分:3)

MEDIA_URL可以更改,因此Django不会将其存储在数据库中。您可以自己添加前缀:

from django.conf import settings

values = ModelA.objects.all().values()
for value in values:
    value['image_field'] = settings.MEDIA_URL + value['image_field']

答案 1 :(得分:1)

settings.py文件中的MEDIA_URL是可变的,因此无法在开头添加它。

遍历每个对象并自己添加MEDIA_URL值。

for value in values:
    newURL = settings.MEDIA_URL
    newURL += value['image_field']
    value['image_field'] = newURL

要特别小心使用斜线....你不想最终得到两个// ...这取决于你是否在MEDIA_URL的末尾有一个。