gpt4 book ai didi

python - 传递 pre_delete() 或 post_delete() 信号参数?

转载 作者:太空宇宙 更新时间:2023-11-03 15:29:12 25 4
gpt4 key购买 nike

我正在使用信号在对象被删除后执行操作;但是,有时我想根据参数执行不同 操作(不是默认操作)。

有没有办法将参数传递给我的信号捕捉器?或者我是否必须放弃信号,而是硬编码我想在模型中执行的操作?

我想做的是这样的:

>>> MyModelInstance.delete()
# default pre_delete() signal is run, in this case, an email is sent
>>> MyModelInstance.delete(send_email=False)
# same signal is run, however, no email gets sent

关于最佳方法有什么想法吗?

最佳答案

我认为您不需要在模型中对您的操作进行硬编码 - 您仍然可以使用信号。但是您需要覆盖 delete() 以至少接受 send_email 参数,并且 - 因为我认为您不能将额外参数传递到 post_delete() - 触发您自己的自定义信号。

像这样:(凭内存写的,未经测试!!!)

import django.dispatch
your_signal = django.dispatch.Signal(providing_args=["send_email",])

def your_callback(sender, **kwargs):
print send_email

your_signal.connect(your_callback)

class YourModel(models.Model):
...
def delete(self, send_email=True):
super(YourModel, self).delete()
your_signal.send(sender=self, send_email=send_email)
...

免责声明:不知道这是否是最好的方法。

关于python - 传递 pre_delete() 或 post_delete() 信号参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1643332/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com