【发布时间】:2017-10-18 20:10:28
【问题描述】:
我正在做这个应用程序,我在其中获取用户的图像,然后使用来自Pillow 库的ImageOps 水平翻转它。为此,我制作了一个像上面这样的模型:
from django.db import models
class ImageClient(models.Model):
image = models.ImageField(null=False, blank=False)
我使用ImageField 制作了一个表单,并使用enctype="multipart/form-data" 制作了一个html 表单,在我看来,我做了以下事情:
from django.shortcuts import render, redirect
from .forms import ImageForm
from .models import ImageClient
from PIL import Image, ImageOps
def new(request):
"""
Returns mirror image from client.
"""
if request.method == 'POST':
form = ImageForm(request.POST, request.FILES)
if form.is_valid():
image = Image.open(form.cleaned_data['image'])
image = ImageOps.mirror(image)
form_image = ImageClient(image=image)
form_image.save()
return redirect('img:detail', pk=form_image.id)
else:
form = ImageForm()
return render(request, 'img/new_egami.html', {'form':form})
....
如您所见,当检查表单是否有效时,我打开表单的图像并将其水平翻转(使用ImageOps.mirror())然后保存。但我总是收到此错误'Image' object has no attribute '_committed'。我知道 Image object 来自 Pillow,但我不明白这个错误。有人可以解释和/或解决这个错误吗?
【问题讨论】:
-
ImageField必须有一个upload_to属性:image = models.ImageField(upload_to='folder-to-upload-photos/', null=False, blank=False)
标签: django