Django:如何在 Django 中求和数字
Django: how to sum up numbers in django
我想计算总销售额并显示总价格,我不知道如何编写函数来执行此操作。我尝试在 models.py 中编写一个小函数来完成它,但它按预期工作。这就是我想要的,我有一个名为 UserCourse 的模型,它存储了所有购买的课程,现在我想计算并总结已售出的单个课程的所有价格。
models.py
class Course(models.Model):
course_title = models.CharField(max_length=10000)
slug = models.SlugField(unique=True)
price = models.IntegerField(default=0)
class UserCourse(models.Model):
user = models.ForeignKey(User , null = False , on_delete=models.CASCADE)
course = models.ForeignKey(Course , null = False , on_delete=models.CASCADE)
date = models.DateTimeField(auto_now_add=True)
以及我如何在 views.py 中过滤此模型,以便我可以显示特定创作者已售出的课程的总价。
您可以在您的视图中使用聚合功能:
from django.db.models import Sum
price_total = UserCourse.objects.filter(
course__title="a title"
).aggregate(
aggregate_price = Sum("course__price")
)["aggregate_price"]
分解:
首先,我们过滤所有 UserCourse objects,其中课程的标题为“a title”
然后我们将它们汇总,找出过滤器选择的所有课程的课程价格总和
通过在我们的 Sum 表达式中命名一个变量,查询集现在将有一个命名值,我们可以通过名称 ['aggregate_price'] 获得并分配给 price_total
现在您可以通过上下文传递 price_total 以在您的模板中使用。
您可以指定其他过滤器来获取不同查询集的价格总计。因此,如果您的创建者是您的 UserCourse 模型中的用户字段,您可以使用 user__username = "my_username" 作为过滤器重复该过程
使用 aggregate
尝试这种方法,从特定 course
过滤所有 UserCourse
对象,然后 运行 该 course
的价格汇总]:
my_course = Course.objects.first()
total_amount_sold = UserCourse.objects.filter(
course=my_course,
).aggregate(total_amount_sold=Sum("course__price"))["total_amount_sold"]
我想计算总销售额并显示总价格,我不知道如何编写函数来执行此操作。我尝试在 models.py 中编写一个小函数来完成它,但它按预期工作。这就是我想要的,我有一个名为 UserCourse 的模型,它存储了所有购买的课程,现在我想计算并总结已售出的单个课程的所有价格。
models.py
class Course(models.Model):
course_title = models.CharField(max_length=10000)
slug = models.SlugField(unique=True)
price = models.IntegerField(default=0)
class UserCourse(models.Model):
user = models.ForeignKey(User , null = False , on_delete=models.CASCADE)
course = models.ForeignKey(Course , null = False , on_delete=models.CASCADE)
date = models.DateTimeField(auto_now_add=True)
以及我如何在 views.py 中过滤此模型,以便我可以显示特定创作者已售出的课程的总价。
您可以在您的视图中使用聚合功能:
from django.db.models import Sum
price_total = UserCourse.objects.filter(
course__title="a title"
).aggregate(
aggregate_price = Sum("course__price")
)["aggregate_price"]
分解:
首先,我们过滤所有 UserCourse objects,其中课程的标题为“a title”
然后我们将它们汇总,找出过滤器选择的所有课程的课程价格总和
通过在我们的 Sum 表达式中命名一个变量,查询集现在将有一个命名值,我们可以通过名称 ['aggregate_price'] 获得并分配给 price_total
现在您可以通过上下文传递 price_total 以在您的模板中使用。
您可以指定其他过滤器来获取不同查询集的价格总计。因此,如果您的创建者是您的 UserCourse 模型中的用户字段,您可以使用 user__username = "my_username" 作为过滤器重复该过程
使用 aggregate
尝试这种方法,从特定 course
过滤所有 UserCourse
对象,然后 运行 该 course
的价格汇总]:
my_course = Course.objects.first()
total_amount_sold = UserCourse.objects.filter(
course=my_course,
).aggregate(total_amount_sold=Sum("course__price"))["total_amount_sold"]