title: 'QueryDict' object has no attribute 'id'
body: <p>On the 'panel' page, I have a choice field with a list of uploaded documents or 'bots' as I usually refer to them. This list only displays 'bots' that have been uploaded by the current user.</p>
  
  <pre><code>panel\forms.py
  
  from django import forms
  import os
  
  from upload.models import Document
  
  #### RETRIEVE LIST OF BOTS UPLOADED BY CURRENT USER ####
  def get_files(user):
      bots = Document.objects.filter(user=user.id)
      file_list = []
      for b in bots:
          file_list.append((b.id,b.docfile))
      return file_list
  
  class botForm(forms.Form):
  
      def __init__(self, user, *args, **kwargs):
          super(botForm, self).__init__(*args, **kwargs)
          self.fields['bot'] = forms.ChoiceField(choices=get_files(user))
  </code></pre>
  
  <p>This works fine and displays a list of all the users bots. The problem arises when I try to pass these values over to the 'game' page and access them here.</p>
  
  <pre><code>game\views.py
  
  from django.shortcuts import render_to_response
  from django.template import RequestContext
  from django.http import HttpResponseRedirect
  from django.core.urlresolvers import reverse
  
  from game.models import game
  from game.forms import GameForm
  from upload.models import Document
  from panel.forms import botForm
  import league
  
  def RPS(request):
      if request.method == 'POST': # If the request is a POST method...
  
          if 'PanelPlay' in request.POST:
              panel = botForm(request.POST)
              if panel.is_valid():
                  print panel.cleaned_data['bot']
  
          elif 'GamePlay' in request.POST:
              form = GameForm(request.POST) # A form bound to the POST data
              if form.is_valid(): # All validation rules pass
                  leagueOuput = []
                  leagueOutput = league.run(form.cleaned_data['bot1'],form.cleaned_data['bot2'])
                  newGame = game()
                  newGame.bot1 = leagueOutput[0]
                  newGame.bot2 = leagueOutput[1]
                  newGame.bot1wins = leagueOutput[2]
                  newGame.bot2wins = leagueOutput[3]
                  newGame.save()
                  return HttpResponseRedirect(reverse('game.views.RPS')) # Redirect after POST
  
      form = GameForm() # An unbound form
      results = game.objects.all()    # Load messages for the list page     
  
      return render_to_response('game.html', {'results': results, 'form': form}, context_instance=RequestContext(request))
  </code></pre>
  
  <p>When attempting to access and validate the panel data, I get the following error.</p>
  
  <blockquote>
    <p>'QueryDict' object has no attribute 'id'</p>
  </blockquote>
  
  <p>Referring to this specific line.</p>
  
  <pre><code>bots = Document.objects.filter(user=user.id)
  </code></pre>
  
  <p>I have found and read about a number of similar issues but I can't seem to carry over their solutions to my own project. </p>
  
  <p>Thanks in advance for any and all help.</p>