如何在Django模型中重命名上传的图像

8

我有这段代码用于提交表单:

form = form_class(request.POST, request.FILES, instance=object)
if form.is_valid(): 
form.save()

image_path = models.ImageField(upload_to='books/')

目前,books/book1/jpg 被插入到该字段中。

但我希望将图像重命名为 modelName_pk.jpg,并将该值保存在 image_path 中。

我该如何实现这个功能?


这是一个好问题,我不知道为什么没有答案。 - Ahmed I. Elsayed
问题在于在调用 save() 方法之前,模型实例的 pk 属性并未被赋值。您可以参考以下答案:https://dev59.com/D3E85IYBdhLWcg3wpFIa#20139166 进行上传并重命名。 - Shipra
1个回答

2
每个上传的文件都保存在request.FILES中,这是UploadedFile的实例,因此,使用表单中图像字段的名称即可访问它:request.FILES['imagename'].name
然后,您可以像往常一样保存模型实例。希望这能帮助其他人,因为这是一个非常古老的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接