如何在Django中按文件名过滤ImageField
我在我的模型里添加了一个图片字段,像这样:
class UserImage(models.Model):
photo = models.ImageField(upload_to='target_path')
....
当我保存了一张图片,比如说'a.jpg',然后我想让用户用文件名'a.jpg'来过滤这个模型,我应该怎么写呢:
UserImage.objects.filter(photo.filename='a.jpg')
....
3 个回答
0
你需要用用户图像模型中的photo
名称来进行查询。
name = UserImage.objects.all()[0].photo.name
print(name)
media/a.jpg
UserImage.objects.filter(photo=name).all()
或者
UserImage.objects.filter(photo="media/a.jpg").all()
<QuerySet [<UserImage: UserImage object (1)>]>
1
上面的回答是正确的,另外你也可以使用icontains,就像我这样用的。
comment_qs = Upload.objects.filter(title__icontains=str(file_name)).filter(content_type__model='Task')
20
你的建议会导致错误。试试这个:
UserImage.objects.filter(photo='a.jpg')
补充说明:在Django中,上传的路径会加在文件名之前。所以查询也应该类似这样做,比如:
UserImage.objects.filter(photo='images/users/photos/a.jpg')