Я задал этот вопрос об аннотации, чтобы найти 5 самых травмированных игроков, но теперь у меня возникла проблема с отображением правильной информации, и я решил, что это должен быть собственный вопрос.
Это мой текущий вид:
def home(request):
context={}
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]
print most_injured
context['most_injured'] = most_injured
context['most_recent'] = most_recent
context['news'] = news
return render_to_response('dash/home.html', RequestContext(request, context))
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)
class Player(models.Model):
first_name = models.CharField(verbose_name='First Name', max_length=30, null=True, blank=True)
last_name = models.CharField(verbose_name='Last Name', max_length=30, null=True, blank=True)
team = models.ForeignKey(Team, related_name='Team played for')
pob = models.CharField(verbose_name='Place of Birth', max_length=100, null=True, blank=True)
dob = models.DateField()
age = models.IntegerField(null=True, blank=True)
height = models.CharField(verbose_name='Height', max_length=10, null=True, blank=True)
weight = models.CharField(verbose_name='Weight', max_length=10, null=True, blank=True)
drafted_by = models.ForeignKey(Team, related_name='drafted by')
Однако, когда я распечатываю most_injured
, я получаю:
- Игрок A
- Игрок Б
- Игрок A
Когда на самом деле я думал, что это должно отображаться как:
- Игрок A
- Игрок Б
Из-за того, что игрок A получил боль больше, чем игрок B
Есть предложения?
Я думал, что так оно и должно быть.
- Игрок А (2 травмы)
- Игрок Б (1 травма)
- и т. д.