Django: How to access original (unmodified) instance in post_save signal

后端 未结 3 2065
一生所求
一生所求 2020-12-13 00:21

I want to do a data denormalization for better performance, and put a sum of votes my blog post receives inside Post model:

class Post(models.Model):
    \"\         


        
3条回答
  •  渐次进展
    2020-12-13 00:56

    This is not an optimal solution, but it works.

    @receiver(pre_save, sender=SomeModel)
    def model_pre_save(sender, instance, **kwargs):
        try:
            instance._pre_save_instance = SomeModel.objects.get(pk=instance.pk)
        except SomeModel.DoesNotExist:
            instance._pre_save_instance = instance
    
    
    @receiver(signal=post_save, sender=SomeModel)
    def model_post_save(sender, instance, created, **kwargs):
        pre_save_instance = instance._pre_save_instance
        post_save_instance = instance 
    

提交回复
热议问题