私は現在使用しています:
- パイソン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['avatar'] は None です
self.request.FILES は MultiValueDict です: {}