title: Django Stale Model Objects and Forms ChoiceField vs ModelChoiceField
body: <p>This is just a curiosity that bugs me. I created a Form class to handle document selection from a database. Naturally, one must get the list of documents from the database to populate the available choices. I get "stale" behavior from building the choices manually and using a ChoiceField. But I get the accurate result when utilizing the ModelChoiceField option "queryset".</p>
  
  <p>By "stale" I mean if I upload a new document and render the page, the list shows only the old set of documents (sometimes persisting even after refresh of the page, which according to the view logic should regenerate the form--proof of this is the fact that the second method works as expected no matter the use case).
  Example as follows:</p>
  
  <p>Stale version:</p>
  
  <pre><code>class GetDocumentForm(forms.Form):
      document_query   = Document.objects.all().order_by('docfile')
      document_choices = []
  
      for document in document_query:
          document_choices.append((document.id, document.docfile.name))
  
      document         = forms.ChoiceField(label='', choices=document_choices)
  </code></pre>
  
  <p>Accurate version:</p>
  
  <pre><code>class GetDocumentForm(forms.Form):
      document         = forms.ModelChoiceField(queryset=Document.objects.all())
  </code></pre>
  
  <p>What gives? What's the difference? Why do they behave differently?</p>