title: Django form to query database (models)
body: <p>So I want to create a super basic form with a single input field which will be used to query my database.</p>
  
  <p>My model (<code>models.py</code>) is as follows:</p>
  
  <pre><code>from django.db import models
  
  class Book(models.Model):
      uid = models.IntegerField(primary_key=True)
      title = models.CharField(max_length=30)
      class Meta:
          db_table = u'books'
  </code></pre>
  
  <p><code>forms.py</code>:</p>
  
  <pre><code>from django import forms
  from myapp.models import Book
  
  class EnterIDForm(forms.form):
  book_id = forms.CharField()
  # add a custom clean function to validate that the user input
  #  is a valid book ID
  def clean_book_id(self):
      try:
          book_id = int(self.cleaned_data["book_id"])
      except:
          book_id = None
  
      if book_id and Book.objects.filter(uid=book_id).count():
          return book_id
      else:
          raise forms.ValidationError("Please enter a valid book ID number.")
  </code></pre>
  
  <p><code>views.py</code>:</p>
  
  <pre><code>from django.shortcuts import render_to_response
  from myapp.models import Book
  
  def form_view(request):
      if request.method == "POST":
          # the user has submitted the form, see if we have a book
          book_id_form = EnterIDForm(request.POST) # instantiate our form class with the user data
          if book_id_form.is_valid():
              # if our form is valid, then we have a book_id that works:
              the_book = Book.objects.get(uid=book_id_form.cleaned_data["book_id"])
                  return render_to_response("book_template.html", { "the_book": the_book }, context_instance=RequestContext(request))
          # if the form wasn't valid, it will fall through to the other return statement.
      else:
          # If the user didn't submit a form, instantiate a blank one.
          book_id_form = EnterIDForm()
      return render_to_response("form_template.html", { "book_id_form": book_id_form }, context_instance=RequestContext(request))
  </code></pre>
  
  <p>I want the input field to collect the "uid" from the user and display the all of the data from the Book model instance where uid is some book in the database. </p>
  
  <p>I have an understanding of how the form is tied in with the view, and later templates, but I just cannot seem to get it to work.</p>
  
  <p>I've endlessly searched the Django site and many other resources for an example I can learn from, but nothing.</p>
  
  <p>Anyone mind helping me out?</p>
  
  <p>Thanks.</p>