我在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后端,底层存储类已被覆盖
答案 0 :(得分:1)
url
是property
,而不是数据库中的值(FileField code),这就是您无法从values()
获取该值的原因。据我所知,您必须单独获取url
值...
你可能想看一下only()
。如果你走这条路,你应该看看像Django Debug Toolbar这样的SQL查询。如果url
属性尝试检索only()
中未包含的字段,则可能会进行单独的SQL调用。