Search code examples
djangodjango-signals

Django How to update some specific fields data after input from another model using signals


I have some problem with django signals. I wanna update PermohonanWP status model fields from 'PROSES' to 'SUCCESS' after I Input data to PenelitiPemindahanWP. (Suppose i have already input data to PermohonanWP model with status = 'PROSES')

here my model.py

class PermohonanWP(models.Model):
      npwp = models.CharField(max_length=15, null=False)
      nama = models.CharField(max_length=100, null=False)
      status = models.CharField(max_length=20, null=True)

class PenelitiPemindahanWP(models.Model):
      permohonan_pemindahan = models.ForeignKey(PermohonanWP, on_delete=models.CASCADE)
      nomor_lhp = models.IntegerField(null=True)
      nomor_st = models.CharField(max_length=50, null=True)

here my signals i input it in model.py

@receiver(post_save, sender=PenelitiPemindahanWP, dispatch_uid="update_permohonan_id")
def update_permohonan(sender, instance, **kwargs):
    pemohon = PermohonanWP.objects.get(id=instance.permohonan_pemindahan)
    pemohon.status = "SUCCESS"
    pemohon.save()

I wanna update the status field from PermohonanWP but whenever i submit saved button, it not saved and not update the fields.


Solution

  • Correct this

    pemohon = PermohonanWP.objects.get(id=instance.permohonan_pemindahan)
    

    to

    pemohon = PermohonanWP.objects.get(id=instance.permohonan_pemindahan.id)
    

    OR

    Even simply :

    pemohon = instance.permohonan_pemindahan