Если вы хотите упорядочить определенные объекты по идентификатору в верхней части набора запросов, вы можете заказать условное выражение - например, поставить текущего пользователя на вершину и упорядочить других пользователей по имя:
from django.db.models import Case, When
from django.contrib.auth.models import User
users = User.objects.order_by(
Case(When(id=request.user.id, then=0), default=1),
'last_name',
'first_name'
)
Чтобы поместить несколько объектов сверху, просто настройте условие When
:
ids_at_top = [1, 2]
users = User.objects.order_by(
Case(When(id__in=ids_at_top, then=0), default=1))
Я бы также подумал, можно ли добиться того, что вы хотите, с помощью более простых средств - например, вы можете получить текущего пользователя, исключить его из основного набора запросов, а затем отобразить отдельно в шаблоне, как это
# in the view
current_user = request.user
users = User.objects.exclude(id=current_user.id)
# in the template
{{ current_user.name }}
{% for u in users %}
{{ u.name }}
{% endif %}