python - Django计算人口金字塔的百分比
问题描述
我有一个按性别和年龄组划分的人口数据集,0-4 男性人口,0-4 女性人口等。
我尝试在 views.py 中计算百分比,但效果不佳。所以我想在models.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)
所以首先我需要计算男性和女性的总人口,然后根据models.py中的每个性别和年龄组计算百分比并将其存储到数据库中。
解决方案
视图.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 %}
推荐阅读
- javascript - 在 webpack 中找不到模块
- mysql - 这是用唯一值填充维度表的适当方法吗?
- javascript - 单击 puppeteer 中包含文本的元素
- docker - 为什么 Jenkins 缓存我旧的损坏的 Jenkinsfile?
- kubernetes - kubernetes - 更新到 1.16.8 后连接被拒绝
- javascript - 如何将带有动态字段(一组)的表单输入从子窗口(使用window.open打开)传递给父窗口
- flutter - 如何使所有按钮在颤动时一起挤压到左侧?
- javascript - 使用 Puppeteer 在上述折叠中查找图像
- cmake - CMakeLists - 使链接器找不到文件
- nativescript - Nativescript延迟加载在底部导航中不起作用