[英]How to make PATCH method work for partial update in Django app? Without ImageField update, it doesn't work
[英]Django doesn't update the ImageField path
创建模型实例时,我正在尝试上传个人资料图片。 我希望将个人资料图片存储在一个根据实例ID命名的文件夹中,因此,一旦图片上传,我需要创建一个新目录并将图片移到该目录中。
我遵循了this ,它建议覆盖模型中的默认save()
方法,而this则建议使用post_save signal
两次保存新文件。
我当前的代码如下:
class Emp(models.Model):
photo = models.ImageField("Photo", blank=True, null=True, default='default_avatar.png')
def save(self, *args, **kwargs):
# Call standard save
super(Emp, self).save(*args, **kwargs)
if self.photo.path:
initial_path = self.photo.path
new_path = os.path.join(settings.MEDIA_ROOT,
'profile_picture_of_emp_{0}/{1}'.format(self.pk, os.path.basename(initial_path)))
# Create dir if necessary and move file
if not os.path.exists(os.path.dirname(new_path)):
os.makedirs(os.path.dirname(new_path))
os.rename(initial_path, new_path)
# Save changes
super(Emp, self).save(*args, **kwargs)
因此,这实际上是移动文件并正确创建了new_path
,但是self.photo.path
仍然指向旧位置,我无法找出更新此新路径的方法。 post_save
信号post_save
发生同样的情况,因为它不会更新移动文件的路径。 有什么建议么?
谢谢!
加
my_new_path = 'profile_picture_of_emp_{0}/{1}'.format(self.pk, os.path.basename(initial_path))
self.photo = my_new_path;
super(Emp, self).save(*args, **kwargs)
在末尾。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.