是否可以通过FileField的url属性查询Django对象

时间:2018-03-27 20:38:02

标签: django url filefield

我有一个带有FileField的Django类。我知道你可以通过调用filefield.path或filefield.url来获取FileField的url或路径。我尝试使用

通过FileField的url查询所有这些对象
media = MediaLibraryFile.objects.filter(media_file__url='some_key')

但是我收到了这个错误。

Unsupported lookup 'url' for FileField or join on the field not permitted.

我浏览了一下网页,发现你只能在foreignkey相关对象上使用查找字段,所以我的问题是,如果是这样的话,你如何通过文件字段url查询对象?这似乎是一个非常常见的查询。

这是我在带有icontains

的media_file上进行简单查询时得到的结果
In[27]: MediaLibraryFile.objects.all()[0].media_file.url
Out[27]: '/media/2017/6/13/444e35c2-0432-479a-805d-c46638ee3600.jpg'

In [28]: MediaLibraryFile.objects.filter(media_file__contains='/media/2017/6/13/444e35c2-0432-479a-805d-c46638ee3600.jpg')
Out[28]: <QuerySet []>

1 个答案:

答案 0 :(得分:2)

如果您确切知道自己想要匹配的内容,可以这样做;

MediaLibraryFile.objects.filter(media_file__exact='some_key')

或者您可以执行类似的查询

MediaLibraryFile.objects.filter(media_file__contains='some')

请注意,以上是区分大小写的。如果您不了解案例,可以filter(media_file__icontains='something')

字段查找的文档在这里; https://docs.djangoproject.com/en/2.0/topics/db/queries/#field-lookups