我正在尝试从网络上获取图像并使用图片网址将其保存到imageField。
以下代码吐出错误('JpegImageFile'对象没有属性'_committed')。
from PIL import Image
import urllib.request
import io
if form.is_valid():
instance = form.save(commit=False)
URL = 'http://www.image.jpg'
with urllib.request.urlopen(URL) as url:
file = io.BytesIO(url.read())
img = Image.open(file)
instance.image = img
答案 0 :(得分:0)
instance.image必须是django.core.files.images.ImageFile
类型我正在使用此代码测试我的模型。也许它指出了正确的方向:
# This gets me a temp Image for testing. In your case it would be a real file
def get_test_image_file(tmpdir=None):
file = tempfile.NamedTemporaryFile(suffix='.png', dir=tmpdir)
return ImageFile(file, name=file.name)
和我做的模型测试:
def test_addimage_create(self):
adimage = AdImage.objects.create(advertiser=self.advertiser,
picture=get_test_image_file(tmpdir=MEDIA_ROOT))
self.assertIsInstance(adimage, AdImage)
所以在你的情况下,而不是instance.image = img
。 img
必须是类型ImageFile
的对象,然后可以将其分配给form.instance。顺便说一句。您应该在save()