#django
#django
Вопрос:
Я хочу получить все 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:
вы можете добавить -
в свой 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
Комментарии:
1. Вы также можете указать свойство
Meta
classordering
на случай, если оно должно быть упорядочено таким образом по умолчанию.