【发布时间】:2018-09-22 06:47:43
【问题描述】:
这是models.py
class ledger1(models.Model):
User = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
Company = models.ForeignKey(company,on_delete=models.CASCADE,null=True,blank=True,related_name='Companys')
Creation_Date = models.DateField(default=datetime.now)
name = models.CharField(max_length=32,unique=True)
Opening_Balance = models.DecimalField(max_digits=19,decimal_places=2)
Closing_balance = models.DecimalField(max_digits=10,decimal_places=2)
class journal(models.Model):
User = models.ForeignKey(settings.AUTH_USER_MODEL,on_delete=models.CASCADE,null=True,blank=True)
Company = models.ForeignKey(company,on_delete=models.CASCADE,null=True,blank=True,related_name='Companyname')
Date = models.DateField()
By = models.ForeignKey(ledger1,on_delete=models.CASCADE,related_name='Debitledgers')
To = models.ForeignKey(ledger1,on_delete=models.CASCADE,related_name='Creditledgers')
Debit = models.DecimalField(max_digits=10,decimal_places=2,)
Credit = models.DecimalField(max_digits=10,decimal_places=2)
我想使用 django 查询创建一个数学方程式,我的方程式结果将显示在 ledger1.Closing_Balance 字段中
所以我试过这个:
@receiver(pre_save, sender=ledger1)
def update_user_closing_balance(sender,instance,*args,**kwargs):
Closing_balance = ledger1.objects.annotate(debitsum=Sum('Debitledgers__Debit')) + instance.Opening_Balance - ledger1.objects.annotate(creditsum=Sum('Creditledgers__Credit'))
instance.Closing_balance = Closing_balance
django 有可能吗??? 因为如果我运行它,我会收到不支持的操作数错误...
这个有替代代码吗???
如果有人知道...请帮助
提前谢谢你
【问题讨论】:
标签: python django django-models django-signals