我有一个模型,ImageField
其中包含在上传后应调整大小。
class SomeModel(models.Model):
banner = ImageField(upload_to='uploaded_images',
width_field='banner_width',
height_field='banner_height')
banner_width = models.PositiveIntegerField(_('banner width'), editable=False)
banner_height = models.PositiveIntegerField(_('banner height'), editable=False)
def save(self, *args, **kwargs):
super(SomeModel, self).save(*args, **kwargs)
resize_image(filename=self.banner.path,
width=MAX_BANNER_WIDTH,
height=MAX_BANNER_HEIGHT)
resize_image
是一个自定义函数,可以调整大小,一切正常,除了banner_width和banner_height在调整大小之前填充了原始图像的尺寸。
调整后图像的实际尺寸可能小于给定的 MAX 值,因此我必须打开调整后的文件以检查调整后的实际尺寸。然后我可以手动设置banner_width
and banner_height
,然后再次保存,但这不是有效的方法。我也可以先调整大小,设置宽度和高度字段,然后保存,但是在self.banner.path
执行保存之前该位置的文件不存在。
关于如何正确完成此操作的任何建议?