title: Django: How to write query to sort using multiple columns, display via template
body: <p>I'm quite new to Django, and not too experienced with MVC, DB queries. </p>
  
  <p>I have a Customer table which includes customer_name, city_name, as well as a state_name (pulled from a foreign key table). In the HTML, I'm trying to display the results in a list first sorted alphabetically by state_name, then by city_name, then by customer_name name. Like so..</p>
  
  <pre><code>ARIZONA
     PHOENIX
       AAA, Inc.
       BBB, LLC.
  
     SCOTTSDALE
       AAA, LLC.
       DDD, Corp.
  
  CALIFORNIA
     ANAHEIM
       ...
  </code></pre>
  
  <p>My model.py is as follows:</p>
  
  <pre><code>from django.db import models
  
  class Customer(models.Model):
      def __unicode__(self):
          return self.customer_name
  
      customer_name = models.CharField(max_length=60)
      city_name = models.CharField(max_length=30)
      state = models.ForeignKey('State')
  
  class State(models.Model):
      def __unicode__(self):
           return self.state_name
  
      state_name = models.CharField(max_length=20)
      state_code = models.CharField(max_length=2)
  </code></pre>
  
  <p>In my urls.py, I have:</p>
  
  <pre><code>url("^customers/$",
      direct_to_template,
      {'template': 'pages_fixed/customers.html',
      'extra_context': {'customers': Customer.objects.all().order_by('state')}},
      name='customers'),
  </code></pre>
  
  <p>And in my HTML, I have a working template as:</p>
  
  <pre><code>    &lt;div class='customers'&gt;
          {% for customer in customers %}
              &lt;div class='block_customer'&gt;
                  &lt;p&gt;{{ customer.state.state_name }}&lt;/p&gt;
                  &lt;p&gt;{{ customer.city_name }}&lt;/p&gt;
                  &lt;p&gt;{{ customer.customer_name }}&lt;/p&gt;
              &lt;/div&gt;
          {% endfor %}
      &lt;/div&gt;
  </code></pre>
  
  <p>It's all sort of working but obviously not sorting correctly and I'm not sure what's the best way to design it. I tried some inner loops with the templates, was hoping the templates would let me define some sorting rules but this doesn't seem to be supported/correct. I suspect that I need to query the data differently or pre-sort them in code ahead of time? I'm not sure if this would be done in the View (what is Django's form of Controller?).. If anyone could point me in the right direction, that would be MUCH appreciated! </p>