Django 2.2.1中list_field中对象的排序

时间:2019-05-17 21:39:37

标签: django django-models django-admin

我刚刚将项目从Django 1.11.20升级到Django 2.2.1,并注意到list_filter:s中的顺序有些随机。

在更高版本(大于1.11.20)的Django版本中,模型的订购属性是否已删除?

这是我的模特:

class Customer(models.Model):
    name = CharField(max_length=255, null=False, blank=False)
    organization_number = CharField(max_length=64, unique=True, null=True, blank=True)
    disable_auto_creation_of_invoices = BooleanField(default=False)

    class Meta:
        ordering = ["name"]

    def __str__(self):
        return self.name

我看了一下查询,这是在Django 2.2.1的RelatedOnlyFieldListFilter过滤器中获取客户的查询:

SELECT
`core_customer`.`id`, `core_customer`.`name`, 
`core_customer`.`organization_number`, 
`core_customer`.`disable_auto_creation_of_invoices`
FROM `core_customer` WHERE `core_customer`.`id` IN (SELECT
DISTINCT U0.`customer_id`
FROM `time_report_timereportentry` U0)

这是Django 1.11.20中的查询:

SELECT
`core_customer`.`id`, `core_customer`.`name`, 
`core_customer`.`organization_number`, 
`core_customer`.`disable_auto_creation_of_invoices`
FROM `core_customer` WHERE `core_customer`.`id` IN (SELECT
DISTINCT U0.`customer_id` AS Col1
FROM `time_report_timereportentry` U0) ORDER BY `core_customer`.`name` ASC

您可以看到Django 1.11.20中有一个ORDER BY,但在Django 2.2.1中却没有。

您对如何获取按订购属性排序的对象有任何想法吗?

似乎普通的list_filter(没有RelatedOnlyFieldListFilter)也不会通过ordering属性进行排序。

感谢您提供帮助以解决(!)这个问题。

1 个答案:

答案 0 :(得分:0)

您可以从模型中订购数据,假设您有一个名为Shop的模型,并且想按名称订购,只需在模型内部添加一个类Meta。

class Meta:
    ordering = ['name']