将self参数传递给django回调

时间:2012-03-23 23:01:20

标签: django django-signals

我想检查模型属性make_initial_plan,make_default_plan是否会在模型中设置为安全,如果是,则取消设置所有其他模型实例上的所有属性,但我不知道如何传递self参数回电话

@receiver(pre_save)
def desactivar_default_o_initial(sender, instance, **kwargs):
    if self.make_initial_plan == True:
        for item in Plan.objects.all():
            item.make_initial_plan = False
            item.save(firstTimePass=False)
    if self.make_default_plan == True:
        for item in Plan.objects.all():
            item.make_default_plan = False
            item.save(firstTimePass=False)

任何想法,提前帮助

1 个答案:

答案 0 :(得分:4)

在信号中没有self,因为它们不是类方法。您应该使用sender来获取发送信号的班级,并使用instance获取对象本身(即这就是您需要的信息)

另外,我认为你应该为信号连接器提供一个sender参数。在当前设置中,您的处理程序将用于任何django模型。