如何使用 Django 1.7 中的工具计算百分比

How to calculate percentage with facility in Django 1.7

如何在 Django 1.7 中计算百分比?

我需要return

[{'gender': 'F', 'perc': 55.0%}, {'gender': 'M', 'perc': 45.0%}]

在这种情况下,我尝试

from myproject.core.models import Person
from django.db.models import Count

g = Person.objects.values('gender').annotate(perc=Count('gender')).order_by('gender').values('gender', 'perc')
total_itens = Person.objects.count()

但不是结果,我尝试

gender_m = Person.objects.filter(gender='M').count()
gender_f = Person.objects.filter(gender='F').count()
total_itens = Person.objects.count()

gender_m * 100 / total_itens
gender_f * 100 / total_itens

我的问题:如何在上下文中 return this 并在模板中呈现?

在我要使用的模板中

{% for item in itens %}
    {{ item.gender }} - {{ item.value }}
{% endfor %}

我使用 TemplateView(通用视图)

您只需重写方法 get_context_data。而你的第一次试炼就快完成了。

class MyView(TemplateView):
    template_name = 'template.html'

    def get_context_data(self, **kwargs):
        genders = Person.objects.values('gender').annotate(cnt=Count('gender')).order_by('gender')
        total_items = Person.objects.count()
        items = [
            {'gender': g['gender'], 'value': g['cnt'] * 100 / total_items} for g in genders
        ]
        return {'items': items}