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

Is it possible to query Django objects by their FileField's url attribute

我有一个带有 FileField 的 Django class。我知道您可以通过调用 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.

我环顾了网络,发现只能在与外键相关的对象上使用查找字段,所以我的问题是如果是这种情况,如何通过文件字段查询对象 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 []>

如果你确切地知道你想要匹配什么,你可以做;

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