I've been throught this too :) First of all, you need to use both {{ form.image}} and {{ form.image_file }} this will create the hidden file and the file input field.
Also, if you forgot like I did, you need to put enctype="multipart/form-data" into the form tag. Thirdly, in the view, do this: if request.POST: new_data = request.POST.copy() new_data.update(request.FILES) # This has to be added errors = manipulator.get_validation_errors(new_data) if not errors: new_message = manipulator.save(new_data) Good luck, I hope this helps