See here: https://github.com/django/django/blob/master/django/contrib/admin/options.py#L1436-L1437 It seems to me not obvious, that after call is_valid, object obj will be changed. The quick solution for me was the following: form = ModelForm(request.POST, request.FILES, instance=...