我目前正在使用:
- 蟒蛇 3.3
- Django 1.6.5
- django-imagekit 3.2.1
- django-guardian (我不认为这是相关的,我可以确认 Profile 模型上的行级权限是正确的)
我似乎无法通过 ModelForm 更改个人资料图片。通过 UpdateView 提交时,ModelForm 似乎更新了附加到模型的所有其他字段(转到 success_url)。我尝试过使用普通的 ImageField 并使用 form-ProcessedImageField ,但这也不起作用。奇怪的是,我实际上可以使用 UpdateView“删除”图像(这意味着对图像的引用被删除,它保留在磁盘上)。此外,我可以在管理页面中自由更改图像,它也可以正确生成缩略图。
不知道还有什么可以尝试或这里发生了什么。帮助将不胜感激。
模型:
class Profile(models.Model):
...
avatar = ProcessedImageField(
upload_to=get_upload_filepath,
processors=[ResizeToFill(500, 500)],
format='JPEG',
blank=True,
default='img/200x200.gif'
)
avatar_thumbnail = ImageSpecField(
source='avatar',
processors=[ResizeToFill(200,200)],
format='JPEG',
options = {
'quality': 100
}
)
... some more fields
辅助功能:
def get_upload_filepath(instance, filename):
return '/'.join(['img', instance.user.username, 'avatar.jpg'])
模型形式:
class ProfileForm(ModelForm):
... overridden widgets on some fields
class Meta:
model = Profile
fields = ('first_name', 'last_name', 'birth_date', 'phone_number', 'avatar')
编辑:
form.cleaned_data['avatar'] 是无
self.request.FILES 是 MultiValueDict: {}