Can I peform two pre-save signal in django for same operation just the sender will be diffrent in both cases...
This is my models:
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)
And this I have done previously:
@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
I want to do a similar pre-save signal but the sender will be journal...And Can I have two signal for same functionality in django?
I mean to say when the ledger is updated the closing balance will be updated automatically that I have done already...
But I also want to do something like when journal is updated then also the closing balance will be updated...
Do anyone know this?
This will trigger pre_save for related Ledger1 models
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)