title: submitted django form properly contains user data but shows as unbound and invalid
body: <p>I have a form with a single ChoiceField (widget radioselect) whose choices are dynamically generated and render perfectly. When the form is submitted the POST data shows the correct value (1-5) for the choice selected (in live debug and in the browser debug info) but for whatever reason the form is considered unbound and invalid. Here's the form:</p>
  
  <pre><code>class ReValidateStudentForm(forms.Form):
      bs_answer = forms.ChoiceField(widget=RadioSelect, label='Answer', required=True)
  
      def __init__(self, possible_answers, *args, **kwargs):
          super(ReValidateStudentForm, self).__init__(*args, **kwargs)
          self.fields['bs_answer'].choices = possible_answers
  </code></pre>
  
  <p>FYI, "possible_answers" is a list of tuples passed to the form that is presenting perfectly as radio select choices when the fresh form is rendered. request.method does equal POST.</p>
  
  <p>Any advice?</p>
  
  <p><strong><em>EDIT</em></strong></p>
  
  <p>Here's the form view code:</p>
  
  <pre><code>@login_required(login_url='/login/')
  def ask_identity_questions(request):
      si = StudentInfo.objects.get(student=request.user)
      qnum = si.bs_question_number
      if request.method == 'POST':
          revalidateform = ReValidateStudentForm(request.POST)
          try:
              va = VerificationAnswers.objects.get(student=request.user, question_num=qnum)
          except VerificationAnswers.DoesNotExist:
              return render(request, "informational.html", {'message': 'User--question does not exist.'})
          if revalidateform.is_valid():
              va.student = request.user
              va.question_num = si.bs_question_number
              va.answer_choice = revalidateform.cleaned_data['bs_answer']
              va.question_answered_time = timezone.now()
              si.bs_question_number += 1
              si.save()
              return render(request, "informational.html", {'message': 'Thank you! Please &lt;a href="/toc"&gt;click here &lt;/a&gt; to continue working through the course material.'})
          else:
              return render(request, 'questions.html', {'form': revalidateform, 'question_num': qnum, 'question': va.question_text})
      else:
          if qnum == 6:
              return render(request, "informational.html", {'message': 'You have already answered all validation questions.'})
          elif si.bs_qset_id == '':
              return render(request, "informational.html", {'message': 'There is a problem with your identity validation information. Please contact customer support.'})
          else:
              # initialize blockscore account
              client = blockscore.Client({'api_key':'sk_live_149dthis3ddiseb2f5notbebforebreal'})
              si = StudentInfo.objects.get(student=request.user)
              # set question ask time
              # retrieve the user's question set using question set id stored in StudentInfo
              # retrieve specific question from set based on value in StudentInfo
              qset = client.question_sets.retrieve(si.bs_qset_id)
              qset = qset.body
              question = qset["questions"][qnum - 1].get("question")
              # add verification question and mark time asked
              try:
                  va = VerificationAnswers.objects.get(student=request.user, question_num=qnum)
              except VerificationAnswers.DoesNotExist:
                  va = VerificationAnswers()
                  va.student = request.user
                  va.question_num = qnum
                  va.question_text = question
                  va.question_asked_time = timezone.now()
                  va.save()
              # create answer list
              possible_answers = []
              # fill answer list with tuples of answer ids + answers
              for answer in qset["questions"][qnum - 1].get("answers"):
                  possible_answers.append((answer.get("id"), answer.get("answer")))
              revalidateform = ReValidateStudentForm(possible_answers)
              return render(request, 'questions.html', {'form': revalidateform, 'question_num': qnum, 'question': question})
  </code></pre>