2012-12-13 42 views
1

我在mongoengine ORM下面的类定义:保存的ImageField mongoengine

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> 

**打印obj_data [ '形象']和打印:

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() 
在我的龙卷风网络requesthandler的我POST方法

图像打印如下:

<PIL.PngImagePlugin.PngImageFile image mode=1 size=290x290 at 0x7F83AE0E91B8> 

des.image仍然没有。

请指教我这里有什么问题。

在此先感谢大家。

+0

'promo'的其他属性呢?他们好吗? – alexvassel

+0

嗨alexvassel, 我已经编辑过一次。一些更正。促销实际上是描述。致歉,请致电 。休息是好的。 – Somesh

回答

3

您不能仅仅通过这种方式将PIL对象放入obj.image = image的字段中。你必须做到:

des = Description() 
des.image.put(open(params.get('file_path', None))) 
des.save() 

换句话说,ImageField应与文件对象通过调用put方法创建一个实例后填充。

+0

非常感谢。有效 !! – Somesh

+0

欢迎您) – alexvassel

相关问题