2011-10-08 29 views
1

我正在製作一個名爲Image的模型,該模型有一種方法可以使用不同的尺寸保存其自身的另一個版本。但是我無法讓新版本中的ImageField接受保存的圖像文件。它在保存方法上失敗,'NoneType'對象不可下標。Django imagefield.save無類型不可自訂

def newversion(self, size): 
    """ Save a new version of the image """ 

    image_version = Image(user=self.user, original=self) 
    image_version.save() 

    path, old_name = os.path.split(self.image.path) 
    ext = os.path.splitext(old_name)[1] 
    vsn_name = "{0}{1}".format(str(image_version.id),ext) 
    vsn_path = os.path.join(path, vsn_name) 

    pil_image = PIL.Image.open(self.image.path) 

    if pil_image.mode not in ('L','RGB'): 
     pil_image = pil_image.convert('RGB') 

    pil_image.thumbnail(size, PIL.Image.ANTIALIAS) 
    pil_image.save(vsn_path, pil_image.format) 

    image_version.image.save(vsn_name,ImageFile(open(vsn_path)), True) 

回答

1

這是因爲我在Windows上,我需要打開該文件與 「RB」:

open(vsn_path, 'rb')