具体参见:http://marconijr.com/content/how-stop-recursion-djangos-postsave-signal
post_save 中直接 instance.save() 的时候就会到死循环去,所以得先 disconnect 再 connect
例子:
def bill_roll_work_flow_set_registered(sender, instance, created, **kwargs):
if instance.state == 'registered':
instance.register_at = datetime.now()
post_save.disconnect(bill_roll_work_flow_set_registered, sender=BillRollWorkFlow, dispatch_uid="bill_roll_work_flow_set_registered")
instance.save()
post_save.connect(bill_roll_work_flow_set_registered, sender=BillRollWorkFlow, dispatch_uid="bill_roll_work_flow_set_registered")
post_save.connect(bill_roll_work_flow_set_registered, sender=BillRollWorkFlow, dispatch_uid="bill_roll_work_flow_set_registered")
post_save 中直接 instance.save() 的时候就会到死循环去,所以得先 disconnect 再 connect
例子:
def bill_roll_work_flow_set_registered(sender, instance, created, **kwargs):
if instance.state == 'registered':
instance.register_at = datetime.now()
post_save.disconnect(bill_roll_work_flow_set_registered, sender=BillRollWorkFlow, dispatch_uid="bill_roll_work_flow_set_registered")
instance.save()
post_save.connect(bill_roll_work_flow_set_registered, sender=BillRollWorkFlow, dispatch_uid="bill_roll_work_flow_set_registered")
post_save.connect(bill_roll_work_flow_set_registered, sender=BillRollWorkFlow, dispatch_uid="bill_roll_work_flow_set_registered")
网友评论(0):


