2017-07-17 76 views
0

我在調整大小後將用戶頭像上傳到S3。我的ModelForm情況如下:Django,枕頭,NotImplementedError - 絕對路徑

class UserAvatarForm(forms.ModelForm): 
    x = forms.FloatField(widget=forms.HiddenInput()) 
    y = forms.FloatField(widget=forms.HiddenInput()) 
    width = forms.FloatField(widget=forms.HiddenInput()) 
    height = forms.FloatField(widget=forms.HiddenInput()) 

    class Meta: 
     model = UserProfile 
     fields = ('id', 'img', 'x', 'y', 'width', 'height') 

    def save(self, *args, **kwargs): 
     photo = super(UserAvatarForm, self).save() 

     x = self.cleaned_data.get('x') 
     y = self.cleaned_data.get('y') 
     w = self.cleaned_data.get('width') 
     h = self.cleaned_data.get('height') 

     image = Image.open(photo.img) 
     cropped_image = image.crop((x, y, w+x, h+y)) 
     resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS) 
     resized_image.save(photo.img.path) 

     return photo 

NotImplementedError在/資料/頭像/這個後端不支持 絕對路徑。

我見過我可以編輯保存方法使用File Storage API,但我不知道如何實現它。任何幫助嗎?謝謝

回答

0

這使它工作;我會把它留在這裏以供將來參考:

def save(self, *args, **kwargs): 
    photo = super(UserAvatarForm, self).save() 

    x = self.cleaned_data.get('x') 
    y = self.cleaned_data.get('y') 
    w = self.cleaned_data.get('width') 
    h = self.cleaned_data.get('height') 

    image = Image.open(photo.img) 
    cropped_image = image.crop((x, y, w+x, h+y)) 
    resized_image = cropped_image.resize((200, 200), Image.ANTIALIAS) 
    storage_path = storage.open(photo.img.name, "wb") 
    resized_image.save(storage_path, 'png') 
    storage_path.close() 

    return photo