Order_By: Django Q объекты порядок?

Я использую operator.or_ и передаю в него объекты Query(). Объект Query() содержит 3 запроса, т.е.

  1. по имени
  2. по описанию
  3. по названию

когда я получаю вывод, результаты не приходят в порядок? как я хочу первый приоритет по имени, а затем описание, а затем название?

Вот пример кода

def search(self, search_terms, filters, category=False, vendor=False):
    terms = [term.strip() for term in search_terms.split()]
    q_objects = []
    if terms:
        for term in terms:
                q_objects.append(Q(name__icontains=search_terms))
                q_objects.append(Q(description__icontains=search_terms))
                q_objects.append(Q(title__icontains=search_terms))
    qs = self.get_query_set()
    if len(q_objects) > 1:
        return qs.filter(reduce(operator.or_, q_objects))
    else:
        return qs

Так может ли кто-нибудь помочь с поиском порядка по имени, сначала по описанию, а затем по названию?

Заранее спасибо!

1 ответ

Заказ осуществляется QuerySet.order_by так что в дополнение к фильтрации набора запросов выполните:

qs = qs.order_by('name', 'description', 'title')
Другие вопросы по тегам