Django: «упорядочить» набор запросов на основе логического поля - PullRequest
0 голосов
/ 26 марта 2019

Я хочу получить все Menù экземпляры следующим образом:

- на верхних позициях те экземпляры, для которых my_boolean_field установлено значение True

- на последних позицияхте экземпляры, для которых my_boolean_field установлено на False

Вот моя Menù модель и мой запрос:

class Menù(models.Model):
    id_menù = models.AutoField(primary_key=True)
    name = models.CharField(max_length=100, unique=True)
    my_boolean_field = models.BooleanField(default=False)

# In my View:
my_query_set = Menù.objects.all().order_by('my_boolean_field')

Я также искал group_by повариант, но я ничего не нашел в Django ORM

1 Ответ

1 голос
/ 26 марта 2019

вы можете добавить - к вашему запросу order_by для сортировки в порядке убывания, например:

my_query_set = Menù.objects.all().order_by('-my_boolean_field')  # first get True ones then get False ones

еще один способ добавить ordering к вашей модели Meta класс, как это:

class Menù(models.Model):
    id_menù = models.AutoField(primary_key=True)
    name = models.CharField(max_length=100, unique=True)
    my_boolean_field = models.BooleanField(default=False)

    class Meta:
        ordering = ('-my_boolean_field ',)

после этого изменения ваши запросы на my_boolean_field будут отсортированы по убыванию по умолчанию и не должны использовать order_by('-my_boolean_field'):

my_query_set = Menù.objects.all()  # results will be sorted by my_boolean_field in reverse order
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...