猿问

Django的。覆盖模型的保存

Django的。覆盖模型的保存

在保存模型之前,我会重新调整图片大小。但是,如何检查是否添加了新图片或更新了描述,以便每次保存模型时都可以跳过重新缩放?

class Model(model.Model):
    image=models.ImageField(upload_to='folder')
    thumb=models.ImageField(upload_to='folder')
    description=models.CharField()


    def save(self, *args, **kwargs):
        if self.image:
            small=rescale_image(self.image,width=100,height=100)
            self.image_small=SimpleUploadedFile(name,small_pic)
        super(Model, self).save(*args, **kwargs)

我想仅在新图像加载或图像更新时重新缩放,但在更新描述时不重新缩放。


Helenr
浏览 794回答 3
3回答

守着星空守着你

一些想法:class Model(model.Model):     _image=models.ImageField(upload_to='folder')     thumb=models.ImageField(upload_to='folder')     description=models.CharField()     def set_image(self, val):         self._image = val         self._image_changed = True         # Or put whole logic in here         small = rescale_image(self.image,width=100,height=100)         self.image_small=SimpleUploadedFile(name,small_pic)     def get_image(self):         return self._image     image = property(get_image, set_image)     # this is not needed if small_image is created at set_image     def save(self, *args, **kwargs):         if getattr(self, '_image_changed', True):             small=rescale_image(self.image,width=100,height=100)             self.image_small=SimpleUploadedFile(name,small_pic)         super(Model, self).save(*args, **kwargs)不确定它是否适用于所有伪自动django工具(例如:ModelForm,contrib.admin等)。
随时随地看视频慕课网APP
我要回答