Django:覆盖特定模型场景的保存方法
在需要根据某些情况修改 Django 模型的保存方法的情况下条件,例如确定图像是否已更新或仅更改了描述,可以采用自定义方法。
一种技术涉及使用属性和标志:
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
def get_image(self):
return self._image
image = property(get_image, set_image)
def save(self, *args, **kwargs):
if getattr(self, '_image_changed', True):
# Logic for image rescaling
super(Model, self).save(*args, **kwargs)
这种方式保证只有当 '_image_changed' 标志设置为 True 时才会触发图像缩放逻辑,表明图像已经被修改的。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3