title: Django doesn't call model clean method
body: <p>I have a view, which creates models from CSV file. I've added clean method to the model class definition, but it isn't called when model is created.</p>
  
  <p>Here is example of models.py:</p>
  
  <pre><code>class Run(models.Model):
      name = models.CharField(max_length=120)
      tested_build = models.ForeignKey('apps.Build')
      timestamp_start = models.DateTimeField()
      timestamp_end = models.DateTimeField()
  
  class CommonMeasurement(models.Model):
      timestamp = models.DateTimeField()
      value = models.FloatField()
      run = models.ForeignKey(Run)
  
      def clean(self):
          super(CommonMeasurement, self).clean()
          print 'here we go'
          if self.timestamp &lt; self.run.timestamp_start or self.timestamp &gt; self.run.timestamp_end:
              raise django_excetions.ValidationError('Measurement is outside the run')
  
  
  class ClientMeasurement(CommonMeasurement):
      metric = models.ForeignKey(ClientMetric)
      account = models.CharField(max_length=120, blank=True)
  </code></pre>
  
  <p>Here is my Form View code examples:</p>
  
  <pre><code>class BaseMeasurementsUpload(generic_views.FormView):
      template_name = 'upload.html'
      models_to_upload = None   
  
      def get_success_url(self):
          return self.request.get_full_path()
  
      def form_valid(self, form):
          uploader = getattr(importers, form.cleaned_data['uploader'])
          try:
              the_uploader = uploader(form.cleaned_data, self.models_to_upload)
              upload_results = the_uploader.get_result_info()
          except django_exceptions.ValidationError as e:
              custom_errors = e
          return render_to_response(self.template_name,
                                    {'upload_results': upload_results,
                                     'custom_errors': custom_errors},
                                    context_instance=RequestContext(self.request))
  
  
  class ClientMeasurementsUploadView(BaseMeasurementsUpload):
      form_class = forms.ClientMeasurementsUploadForm
      models_to_upload = models.ClientMeasurement
  
      def get_form(self, form_class):
          uploaders = (('MeasurementsSimpleCsv', importers.MeasurementsSimpleCsv.__doc__),
                       ('ClientMeasurementsBulkCsv', importers.ClientMeasurementsBulkCsv.__doc__,))
          if self.request.POST:
              # get bound form
              return self.form_class(uploaders,
                                     self.request.POST,
                                     self.request.FILES)
          else:
              return forms.ClientMeasurementsUploadForm(uploaders)
  </code></pre>
  
  <p>importers perform actual validation and call create method for each model.</p>