def save_model(self, request, obj, form, change):
basewidth = 650
img = PIL.Image.open(form.cleaned_data['image_file'])
if img.size[0] > basewidth:
wpercent = (basewidth / float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
form.cleaned_data['image_file'] = img
form.save()
else:
form.save()
这仍然是保存原始图像,而不是调整大小的图像。
form.cleaned_data['image_file'] = img
这条线看起来不对劲。如何将新调整大小的图像分配给表单字段?
答案 0 :(得分:1)
如果您查看文档https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model,您会发现obj
是模型实例。您需要更改obj.your_image_field
而不是表单字段。
答案 1 :(得分:0)
@Ngenator所说的是正确的。它不适合你的原因是你还需要将form.save()更改为obj.save()
以下是我肯定会这样做的代码:
def save_model(self, request, obj, form, change):
basewidth = 650
img = PIL.Image.open(obj.image_file)
if img.size[0] > basewidth:
wpercent = (basewidth / float(img.size[0]))
hsize = int((float(img.size[1]) * float(wpercent)))
img = img.resize((basewidth, hsize), PIL.Image.ANTIALIAS)
obj.image_file = img
obj.save()