Django:如何编写查询以使用多列进行排序,并通过模板显示

皮特:

我是Django的新手,并且对MVC,DB查询不太有经验。

我有一个Customer表,其中包括customer_name,city_name和state_name(从外键表中拉出)。在HTML中,我试图将结果显示在一个列表中,该列表首先按状态名称,然后按city_name,然后按customer_name名称按字母顺序排序。像这样

ARIZONA
   PHOENIX
     AAA, Inc.
     BBB, LLC.

   SCOTTSDALE
     AAA, LLC.
     DDD, Corp.

CALIFORNIA
   ANAHEIM
     ...

我的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)

在我的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>

一切都在工作,但显然排序不正确,我不确定设计它的最佳方法是什么。我尝试使用模板进行一些内部循环,希望模板可以让我定义一些排序规则,但这似乎不受支持/正确。我怀疑我需要以不同的方式查询数据或提前在代码中对它们进行预排序吗?我不确定这是否会在View中完成(Django的Controller形式是什么?)。如果有人能指出我正确的方向,将不胜感激!

juliocesar:

模板中显示有序模型对象有多个级别,每个级别都覆盖上一个级别:

  1. (MODEL LEVEL)Meta属性ordering在其答案中显示@Bithin(有关django docs的更多信息
  2. (VIEW LEVEL)QuerySet order_by方法,如您在视图示例中尝试的那样,如果添加其他字段进行排序,该方法将根据您的需要工作:

    Customer.objects.order_by('state', 'city_name', 'customer_name')

    有关django文档的更多信息)。请注意,.all()此处不需要。

  3. (TEMPLATE LEVEL)regroup模板标记需要在您的示例中使用嵌套(有关django docs的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何从Django模板访问多对多“通过”表的属性?

如何使用多列向量对data.table进行排序

编写动态LINQ查询以使用EF Core进行排序和投影

如何编写查询以对元素进行重新排序

如何在SQL查询语法中编写多列“ in”?

如何编写比较器以使用Lambda表达式基于第二列对2D数组排序

如何对合并的查询集进行排序Django

如何编写考虑多个数字并对其进行排序的查询

如何在Django模板中编写查询

如何使用PrimeNG对多列进行排序

如何编写自定义比较器以使用SimpleEntry对树集进行排序?

通过模板进行查询

如何进行更新查询以使信息通过(MYSQL)?

如何编写脚本以使用bacula进行备份?

如何用包含日期的列对多列进行排序?

编写多状态排序或多列代码?

如何通过Java和Hibernate的特定列对MySQL查询进行排序?

如何对多列进行排序:CSV?C ++

如何使用Django ORM编写MID()查询

如何通过相关项目的条件聚合对Django查询集进行排序?

GAE NDB使用游标对多查询进行排序

如何通过使用某种特定格式对给定的列进行排序来对表进行排序

如何使用两列对SQL查询进行排序?

如何通过匹配值对Excel中的多列进行排序

如何对多查询的结果进行排序?

如何创建 SQL 查询以使用 1 个属性对 JSON 数组进行排序?

如何使用 javascript 在模板中显示 django 查询集值

如何使用 Django 从查询集中对列表进行排序

如何通过谷歌工作表对importhtml工作表进行排序,正在使用查询未解决