Найти - Пользователи
Полная версия: Нахождение позиции объекта в списке
Начало » Django » Нахождение позиции объекта в списке
1
vaxXxa
Есть модель, которая описывает статистику юзера в игре:
class Stats(models.Model):
user = AutoOneToOneField(User, verbose_name=_('User'),
primary_key=True)
points = models.PositiveIntegerField(_('Points'), default=0)
Чтобы вывести список 10 лучших игроков, я делаю примерно такое:
best = Stats.objects.order_by('-points')[:10]
Вопрос, если есть объект user класса User, как правильнее узнать, на каком он месте в общем рейтинге?
Пользователей будет очень много, так что надо как-то с минимумом запросов к базе (ставка на производительность).
Подскажите, если есть какие-то идеи… Спасибо.

AutoOneToOneField беру из django-annoying.
fth
Вроде, если не ошибаюсь, такая конструкция будет выполняться одним запросом:
position = len(Stats.objects.filter(points__gt = user.stats.points))
vaxXxa
хм… интересно придумано! спасибо…
Кто что еще посоветует?
svas
Наверное тогда лучше
position = Stats.objects.filter(points__gt = user.stats.points).count()
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB