我是Django的新手,对MVC和DB查询没有太多经验.
我有一个Customer表,其中包括Customer_name、city_name和state_name(从外键表中提取).在HTML中,我试图在一个列表中显示结果,首先按州名称、城市名称、客户名称的字母顺序排序.就这样..
ARIZONA
PHOENIX
AAA, Inc.
BBB, LLC.
SCOTTSDALE
AAA, LLC.
DDD, Corp.
CALIFORNIA
ANAHEIM
...
我的模特.具体如下:
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)
在我的urls.py中,我有:
url("^customers/$",
direct_to_template,
{'template': 'pages_fixed/customers.html',
'extra_context': {'customers': Customer.objects.all().order_by('state')}},
name='customers'),
在我的HTML中,我有一个工作模板:
<div class='customers'>
{% for customer in customers %}
<div class='block_customer'>
<p>{{ customer.state.state_name }}</p>
<p>{{ customer.city_name }}</p>
<p>{{ customer.customer_name }}</p>
</div>
{% endfor %}
</div>
这一切都是可行的,但显然没有正确排序,我不确定设计它的最佳方式是什么.我try 了一些模板的内部循环,希望模板能让我定义一些排序规则,但这似乎不受支持/不正确.我怀疑我需要以不同的方式查询数据,还是需要提前在代码中对它们进行预先排序?我不确定这是否会在视图中完成(Django的控制器形式是什么?)如果有人能为我指明正确的方向,我将不胜感激!