django上的模型字段应为其他模型的总和

时间:2019-02-24 00:10:05

标签: python django

我是Django的新手,有问题。

我需要有两个模型,但其中一个特殊之处是其中一个字段“ total”是其他模型的两个字段的减法,但是“ total”尚未保存在db中。

class Account(models.Model):
    number = models.CharField()
    total = 0.0

    def __get_total(self):
        return movement.input - movement.output  
        # I don't know how to
        # join A with B
        # should be query about whole
        # movement of a particular account

    total = property(__get_total)


class Movement(models.Model):
    input = models.DecimalField()
    output = models.DecimalField()
    account = models.ForeignKey(Account, related_name='account')

1 个答案:

答案 0 :(得分:1)

def __total(self):
  from django.db.models import Sum
  obj=Movement.objects.filter(account=self).values('account').annotate(inSum=Sum('input'),outSum=Sum('output').first()
  total=obj['inSum']-obj['outSum']

您可以将import语句移动到文件顶部。