В настоящее время я использую:
- Питон 3.3
- Джанго 1.6.5
- Джанго-образкит 3.2.1
- django-guardian (я не думаю, что это связано, я могу подтвердить, что разрешения на уровне строк верны в модели профиля)
Кажется, я не могу изменить изображение профиля через ModelForm. ModelForm, кажется, обновляет все другие поля, прикрепленные к модели, при отправке через UpdateView (переходит к 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['аватар'] - нет
self.request.FILES — это MultiValueDict: {}