В моем приложении Django у меня есть несколько большая коллекция моделей, упорядоченных по количеству раз, когда они завершили действие. Это лидер. Я хочу, чтобы люди, использующие мое приложение, увидели, в каком месте они находятся, и имена двух людей выше и двух человек под ними. Итак, мне нужно найти позицию соответствующего пользователя в этом наборе запросов, а затем найти двух пользователей выше и ниже него. Каков наиболее эффективный способ сделать это? Я рисую пробелы ...Django Get Range в Queryset
1
A
ответ
0
Вы можете отфильтровать объекты по счету, используя score__lt
и score__gt
.
class Participant(models.Model):
user = models.ForeignKey(User)
score = models.IntegerField()
def get_score_above_below(self, n):
try:
above = Participant.filter(score__lt=self.score).order_by('-score')[:n]
except ObjectDoesNotExist:
above = Participant.filter(score__lt=self.score).order_by('-score')
try:
below = Participant.filter(score__gt=self.score).order_by('-score')[:n]
except ObjectDoesNotExist:
below = Participant.filter(score__gt=self.score).order_by('-score')
entries = list(above) + [self] + list(below)
return [(part.user, part.score) for part in entries]
Это возвращает список кортежей:
[('<username two places above>', score),
('<username one place above>', score),
('<instance username>', score),
('<username one place below>', score),
('<username two places below>', score)]
Смежные вопросы
- 1. Django get Foreignkey Reverse Queryset
- 2. Django ModelAdmin get queryset from ModelForm
- 3. Modulo в django queryset?
- 4. Strange QuerySet в Django
- 5. Django Queryset
- 6. Django admin date range filter
- 7. Django Queryset в формах
- 8. Ошибка в Django querySet?
- 9. django - queryset в modelForm
- 10. Shuffle queryset в Django
- 11. Django queryset flipping
- 12. Django QuerySet атрибуты класса
- 13. Limit queryset в Django Tastypie
- 14. Django Queryset Repr Error
- 15. Есть ли способ сделать Django QuerySet get(), как dict.get()?
- 16. Django Queryset как список
- 17. Django QuerySet с моделями
- 18. django forms queryset doudt
- 19. django queryset filter datetimefield
- 20. Django __init__ QuerySet
- 21. Django queryset - сортировка дважды
- 22. Django smart_str on queryset
- 23. Django Queryset Construction
- 24. Изменить структуру Django queryset
- 25. Когда оценивается QuerySet Django?
- 26. django complex queryset аннотация
- 27. django tsstypie. order_by QuerySet
- 28. Django copy/paste Queryset
- 29. Django Queryset only
- 30. Django objects queryset
Я обновил ответ, случаи углу должны быть закрыты в настоящее время –