title: Validation throwing an error on ImageField
body: <p>I have a form where a user uploads an avatar, and it resizes the photo and reloads the page with the new avatar. The form is working perfectly without any validation. </p>
  
  <p>When I add a validation to raise an error if the image is below a certain size, the <code>forms.ValidationError</code> works fine. However, when the data <strong>does</strong> pass validation, it causes the form to error. </p>
  
  <p>Here is what I currently have -- </p>
  
  <pre><code>def handle_uploaded_image(i):
     ### enter size of thumbnail, returns (filename, content)        
  
  def getting_started_pic(request):
      form = ProfilePictureForm()
      username = request.session.get('username')
      profile = UserProfile.objects.get(user=username) 
      if request.method == 'POST':
          form = ProfilePictureForm(request.POST, request.FILES)
          if form.is_valid():
              form = ProfilePictureForm(request.POST, request.FILES, instance = profile)
              ob = form.save(commit=False)
              try:
                  t = handle_uploaded_image(request.FILES['avatar'])
                  ob.avatar.save(t[0],t[1])
              except KeyError:
                  ob.save()
              return render_to_response (...)
      return render_to_response (...)
  </code></pre>
  
  <p>And in models.py -- </p>
  
  <pre><code>class ProfilePictureForm(ModelForm):
      avatar = forms.ImageField()
      class Meta:
          model = UserProfile
          fields = ('avatar')
  
      def clean_avatar(self):
          import StringIO
          from PIL import Image, ImageOps        
  
          str=""
          for c in self.cleaned_data['avatar'].chunks():
              str += c
  
          imagefile = StringIO.StringIO(str)
          image = Image.open(imagefile)
  
          width, height = image.size[0], image.size[1]
          if width &lt; 200 or height &lt; 200:
              raise forms.ValidationError("Please upload an image at least 200 pixels wide.")
          else:
              return self.cleaned_data['avatar']
  </code></pre>
  
  <p>So when I use this validation and it returns <code>cleaned_data</code>, it throws the following error: </p>
  
  <p><code>The UserProfile could not be changed because the data didn't validate.</code> </p>
  
  <p>From the traceback, the line throwing the error  is: <code>ob = form.save(commit=False)</code>, so it seems like a model-level validation error. Could you please tell me why this error is occurring, and how I can fix it? Thank you</p>