Django计算人口金字塔的百分比

2024-09-29 01:19:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个按性别和年龄组划分的人口数据集,0-4个男性人口,0-4个女性人口等等

我试着计算一下视图.py但效果不好。所以我想计算一次型号.py把它保存在我的数据库里。你知道吗

class Pyramid(models.Model):
    city = models.CharField(max_length=15)
    year = models.IntegerField(default=0)

    men_population_0_4 = models.IntegerField(default=0)
    women_population_0_4 = models.IntegerField(default=0)

    men_population_5_9 = models.IntegerField(default=0)
    women_population_5_9 = models.IntegerField(default=0)

    .
    .
    .

    men_population_90_over = models.IntegerField(default=0)
    women_population_90_over = models.IntegerField(default=0)

    def __str__(self):
        return '%s %s' % (self.city, self.year)

所以首先我需要计算男女总人口,然后根据每个性别和年龄组计算百分比型号.py并将其存储到数据库中。你知道吗


Tags: pyself数据库defaultcitymodelsyear人口
2条回答

你知道吗视图.py你知道吗

def Pyramid(request):
dataset = models.Pyramid.objects.all()

datasett = models.Pyramid.objects.annotate(
    sum_men=(
            F('men_population_0_4') + F('men_population_5_9')
            + F('men_population_10_14') + F('men_population_15_19')
            + ...
            + F('men_population_90_over')
           ),
    men_population_0_4_perc=(100*F('men_population_0_4') / F('sum_men')),
    men_population_5_9_perc=(100*F('men_population_5_9') / F('sum_men')),
    ...
)

context = {
    'dataset': dataset,
    'datasett': datasett,
}
return render(request, 'pyramid.html', context)

你知道吗金字塔.html你知道吗

{% for item in datasett %}
    {{ item.sum_men }}
    {{ item.men_population_0_4_perc }}
    {{ item.men_population_5_9_perc }}
{% endfor %}

我在下面试过了,效果不错

你知道吗型号.py你知道吗

class Pyramid(models.Model):
city = models.CharField(max_length=15)
year = models.IntegerField(default=0)

men_population_0_4 = models.IntegerField(default=0)
women_population_0_4 = models.IntegerField(default=0)

men_population_5_9 = models.IntegerField(default=0)
women_population_5_9 = models.IntegerField(default=0)

.
.
.

men_population_90_over = models.IntegerField(default=0)
women_population_90_over = models.IntegerField(default=0)

men_population_sum = models.IntegerField(default=0)
women_population_sum = models.IntegerField(default=0)


def men_population_0_4_percentage(self):
    perc = self.men_population_0_4 * 100 / self.men_population_sum
    return perc

def women_population_0_4_percentage(self):
    perc = self.women_population_0_4 * 100 / self.women_population_sum
    return perc
.
.
.

def __str__(self):
    return '%s %s' % (self.city, self.year)

但这不是保存在数据库中

相关问题 更多 >