我是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的控制器形式是什么?)如果有人能为我指明正确的方向,我将不胜感激!

推荐答案

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

  1. (MODEL LEVEL) Meta attribute 101如@Bithin在他的回答中所示(more on 100)
  2. (VIEW LEVEL) QuerySet 100 method正如您在视图示例中try 的那样,这是可行的

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

    (more on 100).Note that 101 is not needed here.

  3. (TEMPLATE LEVEL) 101 template tag需要使用嵌套在您的示例中(more on 100)

Django相关问答推荐

使用FormWizard将信息从视图传递到表单

我找不到为什么我的DRF登录测试没有按预期工作

对象Django API中的对象

如何删除Docker上的django应用程序?

如何自动删除 Django 模型中的字段值?

有没有办法在Django中按需/点击仅获取和序列化一部分数据以提高性能?

相同的字符串不同的翻译

Django 嵌套事务 - with transaction.atomic()

使用基于类的 UpdateView 在 Django 中更新用户模型

如何从 django 自定义中间件类返回 rest_framework.response 对象?

在 Django CharFields 中自动截断 max_length 字段

django 复数模板

Django:创建索引:非唯一,多列

在python中查找对对象的所有引用

如何创建一个在复选框右侧显示复选框标签的 Django 表单?

Matplotlib - Tcl_AsyncDelete:异步处理程序被错误的线程删除?

Django:以 10 为底的 int() 的无效文字

Django Admin - save_model 方法 - 如何检测字段是否已更改?

django.db.utils.OperationalError 无法连接到服务器

Django 将多个模型传递给一个模板