vkill'blog

“技术本身没有太多价值,掌握了新的思考方式才是真的收获”

django signal post_save use instance.save()

13:40 , vkill
具体参见: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")
类别:python & django | Tags: , , , | 0 条评论, 1798 次阅读
网友评论(0):
发表评论:

Nickname: 
Email:
Site URI: