在我当前的项目中,我将图像存储在 s3 存储桶中。我有一个 pre_save 信号接收器,可以从 Image 类的 s3 存储桶中删除实际图像。
class Image(models.Model):
name = models.CharField(max_length = 255)
caption = models.CharField(max_length = 255)
image = models.ImageField(upload_to='uploads/',blank=True,null=True)
rent_property = models.ForeignKey(RentProperty, related_name='Images')
is_main_image = models.BooleanField(default=False)
@receiver(models.signals.pre_save, sender=Image)
def auto_delete_file_on_change(sender, instance, **kwargs):
"""Deletes file from filesystem
when corresponding `MediaFile` object is changed.
"""
if not instance.pk:
return False
try:
old_file = Image.objects.get(pk=instance.pk).image
except Image.DoesNotExist:
return False
new_file = instance.image
if not old_file == new_file:
old_file.delete(save=False)
我的问题是,我正在使用 django-rest-framework,我想让 PATCH 工作。但是,例如,如果我尝试修补图像描述,它将删除图像本身。我的问题是,我如何编写一个可以区分天气的 IF 补丁中是否存在需要更改的新图像,如果没有,则什么也不做?