У меня есть модель django под названием «Пользователь», в которой хранится основная информация о людях, а именно имя и фамилия. В настоящее время у меня есть простой поиск по моей модели django, где, если пользователь вводит первое имя, набор запросов django возвращает первые 10 совпадений, упорядоченных по последнему имени.
Например, в настоящее время, если вы ищете «Сэм», вы можете получить следующие результаты:
Код для этого прост:
User.objects.filter(Q(first__istartswith=token)).order_by('last')
Однако я хочу изменить это так, чтобы любое точное совпадение имени возвращалось первым, а затем остальные результаты. Поэтому, если кто-то введет «Сэм», результаты должны быть такими::
(Сначала совпадает точное имя, отсортированное по фамилии, а затем остальные совпадения, отсортированные по фамилии ).
Я думал превратить это в 2 набора запросов, а затем просто объединить списки, но мне было интересно, можно ли сделать это в 1 запросе, в идеале придерживаясь базового API набора запросов django (, а не списывая один -. запрос ). Кто-нибудь знает способ сделать это?
Заранее спасибо.