我有一个带有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 []>
答案 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