gpt4 book ai didi

python - 如何在django orm中计算总和和累计总和

转载 作者:行者123 更新时间:2023-12-02 02:41:00 27 4
gpt4 key购买 nike

我有表项目,项目有子项目,子项目有开发人员。另一个表sprint,work distributed in sprint 1 2 ..n so on,每个sprint有不同的开发者数据。现在我如何使用 Django Orm 计算总和、当前冲刺值和完成百分比。

项目有子项目外键

 class project(models.Model):
title = models.CharField(max_length=150)
project = models.ForeignKey("self", on_delete=models.CASCADE,
related_name="subproject", blank=True, null=True)

Developers table

class Developers(models.Model):
quantity = models.FloatField(default=0.0)
charge_rate = models.FloatField(default=0.0)
project = models.ForeignKey("Project", on_delete=models.SET_NULL,
related_name="developers", null=True)

Table Sprint

class Sprint(models.Model):
sprint_name = models.CharField(max_length=150)
percentage = models.FloatField(default=0.0)

sprint data

class SprintsData(models.Model):
sprint = models.ForeignKey(
"project", on_delete=models.CASCADE, related_name="d",
blank=True)
percentage = models.FloatField(default=0.0)

这是示例数据

项目

id name         project
1 development null

子项目

id   name       project
1 Homepage 1
2 header 1
3 footer 1

开发人员

id   name        quantity rate  project (sub project foreign key)
1 developers 5 200 1
2 designer 5 150 2

冲刺

id     name    start_date end_date
1 sprint1 - -

冲刺数据

id    sprint  project(subproject foreign key)  percentage
1 1 1 5
2 1 2 80

输出看起来像

sprint    project      sub_project   total_sum             percentage_complete current_sprint_amount
sprint1 development Homepage (quantity*charge_rate) 5 (total_sum)5%
sprint1 development Header 5*150 80 (5*150)*80%

最佳答案

以下查询将返回所有用 total_sumcurrent_sprint_amount 注释的 SprintsData 对象。从这里你应该能够生成你的表

from django.db.models import Sum, F
SprintsData.objects.annotate(
total_sum=Sum(F('sprint__developers__quantity') * F('sprint__developers__charge_rate'), output_field=models.FloatField())
).annotate(
current_sprint_amount=F('total_sum') * F('percentage')
)

SprintsData.sprint 实际上是 project 模型的外键,这有点令人困惑

Sprint 模型与任何其他模型都没有关系,所以我不确定您如何获得 sprint 名称

关于python - 如何在django orm中计算总和和累计总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59521332/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com