Skip to main content
 首页 » 编程设计

python之试图找到前 5 个最常见的条目

2025年05月04日18oomusou

我试图从我的查询中找到受伤最严重的球员,但我无法获得正确的结果。

我正在考虑将玩家 ID 放入列表中,但您如何计算重复条目,然后生成“前 5 名”最受伤的列表?

这是我的模型.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)) 

请您参考如下方法:

为什么不直接使用 annotations ?

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