使用预选信号,如何在某些情况下关闭它?

2024-04-27 22:19:11 发布

您现在位置:Python中文网/ 问答频道 /正文

使用Django:1.10

问题:有时关闭pre_delete信号和接收器

我想使用pre_delete删除模型的其他相关记录。在

即使我想删除主模型,也不要在某些时候调用它

我试过什么?在

我尝试像这样重写主模型PalletContent中的delete函数:

def delete(self, *args, **kwargs):
    self.auto_delete_line_item = False
    if 'auto_delete_line_item' in kwargs:
        self.auto_delete_line_item = kwargs['auto_delete_line_item']
        del kwargs['auto_delete_line_item']

    return super(PalletContent, self).delete(*args, **kwargs)

然后在pre_delete

^{pr2}$

然后在适当的通话中:

我希望这将激活pre_delete:pallet_content.delete(auto_delete_line_item=True)

我希望这个不是激活pre_delete:pallet.pallet_contents.all().delete()

我得到的是:

 File "/usr/../signals.py", line 31, in auto_delete_line_item
    if instance.auto_delete_line_item:
AttributeError: 'PalletContent' object has no attribute 'auto_delete_line_item'

Tags: djangoinselfautoif信号lineargs