pet*_*ete 35 python sorting django postgresql django-queryset
我对Django很新,对MVC,DB查询也没有太多经验.
我有一个Customer表,其中包括customer_name,city_name以及state_name(从外键表中提取).在HTML中,我试图在列表中显示结果,首先按state_name按字母顺序排序,然后按city_name排序,再按customer_name name排序.像这样......
ARIZONA
PHOENIX
AAA, Inc.
BBB, LLC.
SCOTTSDALE
AAA, LLC.
DDD, Corp.
CALIFORNIA
ANAHEIM
...
Run Code Online (Sandbox Code Playgroud)
我的model.py如下:
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)
Run Code Online (Sandbox Code Playgroud)
在我的urls.py中,我有:
url("^customers/$",
direct_to_template,
{'template': 'pages_fixed/customers.html',
'extra_context': {'customers': Customer.objects.all().order_by('state')}},
name='customers'),
Run Code Online (Sandbox Code Playgroud)
在我的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>
Run Code Online (Sandbox Code Playgroud)
它有点工作,但显然没有正确排序,我不确定什么是最好的设计方法.我尝试了一些带有模板的内部循环,希望模板能让我定义一些排序规则,但这似乎不支持/正确.我怀疑我需要以不同的方式查询数据或提前在代码中对它们进行预先排序?我不确定这是否会在View中完成(Django的控制器形式是什么?)..如果有人能指出我正确的方向,那将是非常感谢!
jul*_*sar 74
模板中显示有序模型对象有多个级别,每个级别都覆盖前一级别:
ordering在他的回答中显示@Bithin(更多关于django docs)(查看级别)order_by您在视图示例中尝试过的QuerySet 方法,如果添加其他字段进行排序,它将按您的意愿工作:
Customer.objects.order_by('state', 'city_name', 'customer_name')
(更多关于django docs).请注意,.all()这里不需要.
regroup模板标签需要嵌套在您的示例中(更多关于django文档)Bit*_*hin 13
您可以指定模型内的顺序,
class Customer(models.Model):
customer_name = models.CharField(max_length=60)
city_name = models.CharField(max_length=30)
state = models.ForeignKey('State')
def __unicode__(self):
return self.customer_name
class Meta:
ordering = ['customer_name', 'city_name', 'state']
Run Code Online (Sandbox Code Playgroud)
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
35080 次 |
| 最近记录: |