2013-10-15 74 views
0

我需要保存到數據庫之前調整圖像大小,所以我重寫保存方法:Django管理圖片上傳不保存在數據庫

from PIL import Image 

class Categorias(models.Model): 
image_height = models.PositiveIntegerField(editable=False,null=True) 
image_width = models.PositiveIntegerField(editable=False,null=True) 
the_image = models.ImageField(upload_to="uploads/image/category",width_field="image_width",height_field="image_height") 

def save(self): 
    if not self.id and not self.the_image: 
     return; 

    image = Image.open(self.the_image) 
    ratio_height = (890*self.image_height)/self.image_width  
    size = (890,ratio_height) 
    image = image.resize(size, Image.ANTIALIAS) 
    image.save(self.the_image.path) 

調整圖像的大小和所著到我的媒體文件夾,但問題在於註冊管理機構沒有保存在數據庫中。

我不知道我錯過了什麼。


toad013幫助我,我可以在登記保存到數據庫中,但後來我得到兩個圖像是寫我的媒體文件夾,一個是原始的和另一個與此代碼調整:

def save(self): 
    if not self.id and not self.the_image: 
     return; 

    image = Image.open(self.the_image) 
    ratio_height = (890*self.image_height)/self.image_width  
    size = (890,ratio_height) 
    image = image.resize(size, Image.ANTIALIAS) 
    image.save(self.the_image.path)  
    super(Categorias, self).save() 

回答

0

你應該仍然需要調用原來的保存功能保存對象

super(Categorias, self).save() 
+0

現在登記被保存到數據庫中,但現在我有原始圖像被保存與原來的寬度和高度,調整版本。可能只是有調整大小的版本? –

+0

hmmm刪除image.save(...),並確保「超級」行是在結束和超級之前,只是分配新的調整大小的圖像:「self.image = image.resize(大小,圖像。 ANTIALIAS)「。這樣,你讓Django的做字段的所有保存和更新 – toad013

+0

獲得:類型錯誤在/管理/ imagens/categorias /添加/ 「元組」對象不是可調用 異常值:\t 「元組」對象不是可調用 高清保存(個體經營): \t \t如果不是self.id而不是self.the_image: \t \t \t回報; \t \t圖像= Image.open(self.the_image) \t \t ratio_height =(890 * self.image_height)/self.image_width \t \t \t \t大小=(890,ratio_height) \t \t圖像= image.resize (大小,Image.ANTIALIAS) \t \t#image.save(self.the_image.path) \t \t self.image = image.size(大小,Image.ANTIALIAS) \t \t超級(Categorias,自我).save( ) –

相關問題