Django正在获取筛选对象的百分比

Django正在获取筛选对象的百分比,django,django-models,django-views,django-templates,django-queryset,Django,Django Models,Django Views,Django Templates,Django Queryset,我有两个模型: class-Freguesia(models.Model): nome=models.CharField(“Freguesia”,最大长度=255) class(models.Model): freguesia=models.ForeignKey(freguesia,on_delete=models.CASCADE,verbose_name=“freguesia”) ......... 我想在html中显示排名前6位的freguesiasintervecao以及它们占总数的百

我有两个模型:

class-Freguesia(models.Model):
nome=models.CharField(“Freguesia”,最大长度=255)
class(models.Model):
freguesia=models.ForeignKey(freguesia,on_delete=models.CASCADE,verbose_name=“freguesia”)
.........
我想在html中显示排名前6位的freguesiasintervecao以及它们占总数的百分比

我已经可以显示Freguesia和他们的干预数量,但我不知道如何显示百分比

我的看法是:

def仪表板视图(请求):
freguesias=Freguesia.objects.annotate(num_interfercao=Count('interfercao')).order_by('-num_interfercao')[:6]
上下文={
“freguesias”:freguesias
}

您可以使用Cast和F

from django.db.models Count, F
from django.db.models.functions import Cast
 
freguesias = Freguesia.objects.annotate(
        num_intervencao=Count('intervencao'),
        total=Count('id')
    ).annotate(
        percentage=Cast(F('num_intervencao') * 100.0 / F('total'), FloatField())
    ).order_by('-num_intervencao')[:6]

重要的是在单独的
注释中计算百分比
而不是在计算依赖字段的字段中。

我想你还有一个)靠近FoatField,我有100%的百分比,但是数字在工作我想问题是总数=(计数('id'),因为我收到的是每个**freguesia的总额,而不是所有freguesia的总额。但是我已经成功了,谢谢你的帮助,很高兴能帮助你!