title: Django form with no errors return False for is_valid()
body: <p>I'm generating a form from metadata</p>
  
  <pre><code>class MeasureForm(forms.Form):
      def __init__(self,*args,**kwargs):
          super(MeasureForm,self).__init__()
          measure_id = kwargs['measure_id']
          m = Measure.objects.get(pk=measure_id);
          if (m):
              # add the measure identifier as a hidden field
              self.fields["measure_id"] = forms.IntegerField(initial = m.id , widget=forms.HiddenInput())
              for mp in MeasureParameters.objects.filter(measure = m):
                  # get the NVL'ed copy of the parameter
                  p = mp.get_parameter_for_measure()
                  if not p.is_modifiable:
                      # the file has a constant value
                      if (p.values and p.default): # constant must have both values and default index
                          value_ = p.values[p.values.keys()[p.default-1]];
                          self.fields[p.name] = forms.IntegerField(
                              label = p.description , 
                              initial = value_, 
                              help_text = p.help_text)
                          self.fields[p.name].widget.attrs['readonly'] = True
                      else:
                          raise Exception("Parameter set as unmodifiable but has no value. \
                                          [measure: %s, parameter: %s, measureparameter %s]"
                                          % (m.id , p.id , mp.__unicode__()))
                  elif (p.values):
                      # convert hstore dict to list of tuples for the choices to read
                      values_ = [(v, k) for k, v in p.values.iteritems()];
                      # set default if exists , else take the first item
                      default_ = values_[p.default-1][0] if p.default else values_[0][0]
                      self.fields[p.name] = forms.ChoiceField(
                          label = p.description , 
                          choices = values_ , 
                          initial = default_, 
                          help_text = p.help_text)
                  else:
                      self.fields[p.name] = forms.IntegerField(label = p.description, help_text = p.help_text)
                  if (not p.is_visible):
                      self.fields[p.name].widget = forms.HiddenInput()
          else:
              raise Exception ("Could not find measure. [measure %s]" % (m.id))
  
      def clean(self):
          return self.cleaned_data;
  </code></pre>
  
  <p>this is my view </p>
  
  <pre><code>def index(request,measure_id = None):
  
      owners = Owner.objects.all()    
      form = None
      result = None
      title = None;
      msg = None;
  
      # handle the form
      if request.method == 'POST': # the form has been submitted
          form = MeasureForm(request.POST, measure_id = request.POST.get('measure_id')) # A form bound to the POST data
          result = -100
          if form.is_valid(): # All validation rules pass
              result = 100
          msg = "%s" % repr(form.errors) # list of validation errors
      else:
          if (measure_id):
              title = Measure.objects.get(pk=measure_id).name;
              # make an unbound form
              form = MeasureForm(measure_id = measure_id)
  
      return render(request, 'calc/index.html' ,
              {'owners' : owners, 
               'form'   : form , 
               'title'  : title , 
               'result' : result, 
               'debug'  : msg })
  </code></pre>
  
  <p>this is a snippet from my template</p>
  
  <pre><code>&lt;div class="content"&gt;
      {{ form.errors }}
      {{ form.non_field_errors }}
      {% if form %}
          &lt;h2&gt;{{ title }}&lt;/h2&gt;
          &lt;form action="/calc/{{m.id}}" method="post"&gt;{% csrf_token %}
              {{ form.as_p }}
          &lt;input type="submit" value="Calculate" /&gt;
          &lt;/form&gt;
      {% if result %}
          The Result is  &lt;span class="result"&gt; {{ result }} &lt;/span&gt;
      {% endif %}
  &lt;/div&gt;
  </code></pre>
  
  <p>So i get empty braces <code>{}</code> for <code>"%s" % repr(form.errors)</code>, <code>form.errors</code> and <code>form.non_field_errors</code> returns nothing. the form posts and I can see the raw data in the request but i keep getting false from <code>is_valid()</code>. why is that ? </p>
  
  <p><strong>EDIT</strong>: when checking if the form is bound i also get false. guessing this is the problem. why isn't the form bound after the call for <code>form = MeasureForm(request.POST, measure_id = request.POST.get('measure_id'))</code> ?</p>
  
  <p>** django newbie, Thanks.</p>