我在mongoengine orm中有以下类定义:
import mongoengine as me
class Description(me.Document):
user = me.ReferenceField(User, required=True)
name = me.StringField(required=True, max_length=50)
caption = me.StringField(required=True, max_length=80)
description = me.StringField(required=True, max_length=100)
image = me.ImageField()
在我的龙卷风web requesthandler的post方法中:
from PIL import Image
def post(self, *args, **kwargs):
merchant = self._merchant
data = self._data
obj_data = {}
if merchant:
params = self.serialize() # I am getting params dict. NO Issues with this.
obj_data['name'] = params.get('title', None)
obj_data['description'] = params.get('description', None)
path = params.get('file_path', None)
image = Image.open(path)
print image # **
obj_data['image'] = image # this is also working fine.
obj_data['caption'] = params.get('caption', None)
obj_data['user'] = user
des = Description(**obj_data)
des.save()
print obj_data['image'] # **
print des.image # This is printing as <ImageGridFsProxy: None>
** print obj_data ['image']和打印图像正在打印:
<PIL.PngImagePlugin.PngImageFile image mode=1 size=290x290 at 0x7F83AE0E91B8>
但是
des.image仍然没有。
请告诉我这里有什么问题。
提前感谢所有人。
答案 0 :(得分:3)
您不能将PIL对象放入obj.image = image
这样的字段中。你必须这样做:
des = Description()
des.image.put(open(params.get('file_path', None)))
des.save()
换句话说,在通过调用ImageField
方法创建实例后,put
应填充文件对象。