通过django queryset上的values()方法访问ImageField的url

时间:2017-03-11 00:39:51

标签: django django-views django-orm

我在Django有一个数据模型,我保存用户上传的照片。在image_file模型(类型Photo)中有一个名为ImageField的属性,其中 - 其中包括 - 存储图像的网址。例如,我可以在模板(和视图)中使用item.image_file.url成功访问此URL。

但是,我似乎无法在视图中执行以下操作:

Photo.objects.filter(owner=user).order_by('-id').values('id','image_file.url')[:10]

即。对于特定用户,我正在尝试获取10个最新的照片对象的图像URL以及对象ID。这给了我FieldError: Cannot resolve keyword 'image_file.url' into field。这不应该有用吗?

我知道我可以检索整个对象并在模板中进行过滤,但我觉得单独检索实际需要的字段而不是完整对象更为理想。

P.S。它是一个postgresql后端,底层存储类已被覆盖

1 个答案:

答案 0 :(得分:1)

urlproperty,而不是数据库中的值(FileField code),这就是您无法从values()获取该值的原因。据我所知,您必须单独获取url值...

你可能想看一下only()。如果你走这条路,你应该看看像Django Debug Toolbar这样的SQL查询。如果url属性尝试检索only()中未包含的字段,则可能会进行单独的SQL调用。