Django ORM 合计税金

问题描述 投票:0回答:1

我有一个 Django 项目。有 Store 模型和 Analytics 模型。 我想计算每家商店的税金。 是否可以通过 Django ORM 在对数据库的一次请求中聚合它?没有任何商店列表循环?

我不想这样:

for store in stores:
    taxes_sum = store.sales_sum*store.tax/100

我想要这样的东西:

taxes_sum = StoreAnalytics.objects.filter(store__user=self.request.user).aggregate(
            sales_sum=Sum(F("accruals_sum"))*Sum(F("tax"))/100)

但是每个商店都有自己的税率(6%、15%、20%...)

class Store(models.Model):
    user = models.ForeignKey(User, on_delete=models.PROTECT)
    name = models.CharField(max_length=128, blank=True, default="", verbose_name="Name")
class StoreAnalytics(models.Model):

    store = models.ForeignKey(Store, on_delete=models.CASCADE, null=True, related_name="store_id")
    sales_sum = models.DecimalField(
        max_digits=10, decimal_places=2, default=Decimal(0), verbose_name="Sales")
    tax = models.IntegerField(
        default=6, validators=[MaxValueValidator(20), MinValueValidator(0)], verbose_name="Tax %"
    )

有什么计算税额的方法吗?

django django-rest-framework django-orm
1个回答
0
投票

是的,我们可以这样做:

from django.db.models import (F, Sum)

StoreAnalytics.objects.filter().values("store__user_id").annotate(
                    total_value=Sum((F("sales_sum")*F("tax"))/100),
                ).order_by("store__user_id")
   
© www.soinside.com 2019 - 2024. All rights reserved.