Django:我可以为同一个操作执行两个预保存信号吗?
我可以在django中为相同的操作生成两个预存信号吗?只是发送方在这两种情况下会有所不同 这是我的模型:Django:我可以为同一个操作执行两个预保存信号吗?,django,django-models,django-signals,Django,Django Models,Django Signals,我可以在django中为相同的操作生成两个预存信号吗?只是发送方在这两种情况下会有所不同 这是我的模型: class Ledger1(models.Model): creation_Date = models.DateField() name = models.CharField(max_length=32) group1_Name = models.ForeignKey(Group1,on_delete=models.CASCADE,bla
class Ledger1(models.Model):
creation_Date = models.DateField()
name = models.CharField(max_length=32)
group1_Name = models.ForeignKey(Group1,on_delete=models.CASCADE,blank=True,null=True)
Opening_Balance = models.DecimalField(max_digits=19,decimal_places=2,blank=True)
Closing_balance = models.DecimalField(max_digits=10,decimal_places=2,blank=True,null=True)
class Journal(models.Model):
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)
这是我以前做过的:
@receiver(pre_save, sender=Ledger1)
def update_user_closing_balance(sender,instance,*args,**kwargs):
debit = instance.Debitledgers.aggregate(debit=Sum('Debit'))['debit']
credit = instance.Creditledgers.aggregate(credit=Sum('Credit'))['credit']
instance.Closing_balance = instance.Opening_Balance + debit - credit
我想做一个类似的预保存信号,但发送方将是日志…我可以在django中有两个相同功能的信号吗
我的意思是说,当分类账更新时,期末余额将自动更新,我已经这样做了
但我也想做一些事情,比如当日记账更新时,期末余额也会更新
有人知道吗?这将触发相关账本1模型的预保存
from django.db.models.signals import post_save
@receiver(post_save, sender=Journal)
def trigger_pre_save(sender, instance, *args, **kwargs):
instance.By.save() # trigger pre_save for By Ledger
# or
# post_save.send(Ledger1, instance=instance.By, created=False)
instance.To.save() # trigger pre_save for To Ledger
# or
# post_save.send(Ledger1, instance=instance.To, created=False)
你能告诉我应该在那里执行什么吗?我能在sender=journal的pre_save信号中调用“update_user_closing_balance”函数吗?调用该函数的可能重复项将不起作用,只需触发pre_saveno。在保存日记账之前,它也会保存分类账。如果它没有按预期工作,请尝试日志保存是的日志保存信号工作正常…谢谢you@Vaibhav我也学到了一些东西。我本以为pre_save可以工作,但我猜它对创建的实例不起作用