计算 Sub Table Django
Calculate Sub Table Django
我是 Django 的新手,我尝试计算相关 table 的子 table。
我有两个模型交易和细节。这是我的模型:
class Transaction(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
code = models.CharField(max_length=50)
class Detail(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
transaction = models.ForeignKey(Transaction, related_name='details', on_delete=models.CASCADE)
qty = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False)
price = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False)
我想在这样的单个查询中获得计算总和 (Detail.qty * Detail.price):
datas = Transaction.objects.all().annotate(sum=sum(qty*price))
如何在 Django ORM 上做到这一点?
您可以在 Django 中组合使用 F
和 Sum
来实现此目的。
detail__
允许您访问外键 Detail
from django.db.models import F, Sum
datas = Transaction.objects.annotate(sum=Sum(F('detail__qty')* F('detail__price')))
我是 Django 的新手,我尝试计算相关 table 的子 table。 我有两个模型交易和细节。这是我的模型:
class Transaction(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
code = models.CharField(max_length=50)
class Detail(models.Model):
id = models.UUIDField(primary_key=True, default=uuid.uuid4, editable=False)
transaction = models.ForeignKey(Transaction, related_name='details', on_delete=models.CASCADE)
qty = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False)
price = models.DecimalField(max_digits=10, decimal_places=2, null=False, blank=False)
我想在这样的单个查询中获得计算总和 (Detail.qty * Detail.price):
datas = Transaction.objects.all().annotate(sum=sum(qty*price))
如何在 Django ORM 上做到这一点?
您可以在 Django 中组合使用 F
和 Sum
来实现此目的。
detail__
允许您访问外键 Detail
from django.db.models import F, Sum
datas = Transaction.objects.annotate(sum=Sum(F('detail__qty')* F('detail__price')))