此代码位于类中。我需要访问classe的self中定义的变量。我如何将self传递给entry_deletion_images_delete?
@receiver(pre_delete, sender=Document, dispatch_uid='document_delete_signal')
def entry_deletion_images_delete(sender, instance, using, **kwargs):
for key, value in self.SIZES.items():
os.remove(self.base_dir + instance.image_main.name)
由于此函数使用内置参数,因此无法将self作为新参数。
答案 0 :(得分:0)
您正在向@receiver()
传递未绑定的功能。你应该传递一个绑定方法,如下所示:
class MyClass(object):
def entry_deletion_images_delete(self, sender, instance, using, **kwargs):
...
instance = MyClass()
pre_delete.connect(instance.entry_deletion_images_delete, sender=Document, dispatch_uid='document_delete_signal')
换句话说,首先你必须创建一个实例(否则self
会是什么?),然后你可以将实例方法注册为信号的接收者。
我所展示的只是一个例子。如何实际创建实例以及何时连接接收器取决于您的用例。