How can I prevent post_save recursion in Django?

后端 未结 4 461
猫巷女王i
猫巷女王i 2020-12-16 04:59

I have some problems when using signal in Django.

post_save occurs recursion because of instance.save() inside of function.

4条回答
  •  抹茶落季
    2020-12-16 05:51

    Disconnect the signal before save, then connect again. https://docs.djangoproject.com/en/1.10/topics/signals/#disconnecting-signals

    def post_save_product(sender, instance, **kwargs):
        post_save.disconnect(post_save_product, sender=sender)
        instance.do_stuff()
        instance.save()
        post_save.connect(post_save_product, sender=sender)
    post_save.connect(post_save_product, sender= Product)
    

提交回复
热议问题