Порядок объектов в list_field в Django 2.2.1 - PullRequest
1 голос
/ 18 мая 2019

Я только что обновил проект с Django 1.11.20 до Django 2.2.1 и заметил, что порядок в моем list_filter: s был немного случайным.

Был ли удален упорядочивающий элемент ordering для Модели в более поздних (чем 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

Я посмотрел на запросы, и это запрос для получения клиентов в фильтре RelatedOnlyFieldListFilter в Django 2.2.1:

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 его нет.

Есть ли у вас какие-либо идеи о том, как отсортировать объекты по свойству ordering?

И похоже, что обычный list_filter (без RelatedOnlyFieldListFilter) также не упорядочивает по свойству ordering.

Спасибо за любую помощь, чтобы разобраться (!) В этом.

1 Ответ

0 голосов
/ 18 мая 2019

Вы можете заказать данные из ваших Моделей, скажем, у вас есть модель с именем Shop, и вы хотите сделать заказ по имени, просто добавьте класс Meta внутри вашей модели.

class Meta:
    ordering = ['name']  
...