我刚刚将项目从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属性进行排序。
感谢您提供帮助以解决(!)这个问题。
答案 0 :(得分:0)
您可以从模型中订购数据,假设您有一个名为Shop的模型,并且想按名称订购,只需在模型内部添加一个类Meta。
class Meta:
ordering = ['name']