Попытка найти 5 самых популярных записей

Я пытаюсь найти самого раннего игрока из моего запроса, но у меня возникают проблемы с получением правильных результатов.

Я думал о том, чтобы поместить идентификатор игрока в список, но как вы собираетесь подсчитывать повторяющиеся записи, а затем создавать «топ-5» самых раненых?

Вот мои models.py

class PlayerInjury(models.Model): player = models.ForeignKey(Player) injury_type = models.ForeignKey(Injury) injury_date = models.DateField(verbose_name='Injured On', null=True, blank=True) description = models.CharField(verbose_name='Description', max_length=180, null=True, blank=True) status = models.ForeignKey(Status) projected_return = models.DateField(verbose_name='Projected Return Date', null=True, blank=True) hide = models.BooleanField(default=False) returned = models.BooleanField(default=False) timestamp = models.DateTimeField(auto_now_add=True) 

и что у меня до сих пор для моих views.py
РЕДАКТИРОВАТЬ

 def home(request): context={} player_list = [] most_recent = PlayerInjury.objects.all().order_by('-timestamp')[:5] news = News.objects.all() most_injured = PlayerInjury.objects.annotate(injury_count=Count('id')).order_by('-injury_count')[:5] context['most_injured'] = most_injured context['most_recent'] = most_recent context['news'] = news return render_to_response('dash/home.html', RequestContext(request, context)) 

3 Solutions collect form web for “Попытка найти 5 самых популярных записей”

Почему бы просто не использовать аннотации ?

 from django.db.models import Count Player.objects.annotate(injury_count=Count('playerinjury')).order_by('-injury_count')[:5] 

Если вы используете 2.7, решение с чистым питоном будет

 from collections import Counter inj_counts = Counter() for ip in all_intered_players: inj_counts[ip.player_id] += 1 inj_counts.most_common(5) # gives you a list of top five [(player_id, num_injuries), ...] 

Хотя использование функции аннотации django, вероятно, более целесообразно; тогда в вашей базе данных произойдет тяжелая работа.

Используйте словарь, в котором ключ является именем игрока, а значение является счетчиком того, сколько раз игрок получил травму. Итерируйте свои данные и увеличивайте значение каждой словарной статьи на любом случае травмы.

Они являются основной концепцией использования словаря в этом сценарии:

Ключи уникальны в словаре, а значения могут быть не такими. Значения словаря могут быть любого типа, но ключи должны иметь неизменяемый тип данных, такой как строки, числа или кортежи.

Чтобы получить верхнюю пятерку, вы можете создать список, который является своего рода словарем по значению .

  • django forms - как обновлять данные пользователя из предыдущего комментария, когда пользователь публикует новый комментарий
  • Как передавать данные между представлениями django
  • показать загрузку gif во время длительной обработки в django?
  • Могу ли я сделать STATICFILES_DIR так же, как STATIC_ROOT в Django 1.3?
  • Django - создание последнего объекта, одновременные фильтры
  • Добавление таблицы пользователей / учетных записей в Postgres в Django View
  • Как найти каталог скриптов с Python?
  • Django: из django.urls import reverse; ImportError: Нет модуля с именем urls
  •  
    Interesting Posts for Van-Lav

    Python и tfidf, сделать это быстрее?

    Случайно перетасовать разреженную матрицу в python

    Расширение STARTTLS не поддерживается сервером. Получение этой ошибки при попытке отправить электронное письмо через Django и частный адрес электронной почты

    Python и urllib2: как сделать запрос GET с параметрами

    k-наибольший двойной выбор

    Что означает один * без идентификатора в функциях Python3?

    Гарантирован ли порядок результатов, полученных из понимания списка?

    Python скрученный люк, который работает как ipython или аналогичный

    как round_corner логотип без белого фона (прозрачный?) на нем с помощью pil?

    Как вы конвертируете Word Document в очень простой html в Python?

    Python: есть встроенный пакет для анализа html в dom

    Какой подход вы использовали для легких модульных тестов Python в App Engine?

    Как создать временный файл (для записи на) в C #?

    Веб-службы Python

    получение байтов из строки unicode в python

    Python - лучший язык программирования в мире.