Как получить позицию объекта в наборе queryset без цикла for?
у меня есть набор запросов длиной = 10000 пользователей
sorted_users = User.ojbects.all().order_by("-money")
и мне нужно получить позицию конкретного пользователя в этом отсортированном наборе запросов,
я могу сделать это с помощьюoor loop:
user_position = 1
for account in sorted_users:
if account.username == "admin":
break
my_position += 1
print(user_position)
работает хорошо, но в случае роста числа пользователей, например, до 100 000, потребуется много времени для подсчета позиций пользователей каждый раз, for loop
работает медленно
как я могу сделать это быстрее, без for loop
?
Вы можете попробовать получить список идентификаторов пользователей, а затем проверить индекс пользователя admin:
users_ids = User.objects.all().order_by("-money").values_list('id', flat=True)
admin_index = users_ids.index(<admin_id>)
print(admin_index)