Django admin save_model为表单字段分配新值

2024-04-23 12:00:30 发布

您现在位置:Python中文网/ 问答频道 /正文

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()

这仍在保存原始图像,而不是已调整大小的图像。在

^{pr2}$

这条线看起来不对。如何将新调整大小的图像分配给表单域?在


Tags: 图像imageformimgdatasizepilsave
2条回答

如果您看一下文档,https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.save_model您可以看到obj是模型实例。您需要更改obj.your_image_field,而不是表单字段。在

@Ngenator说的是对的。它不适合你的原因是你也需要改变窗体保存()至目标保存()

下面是我肯定能做到的代码:

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()

相关问题 更多 >