- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用信号在对象被删除后执行操作;但是,有时我想根据参数执行不同 操作(不是默认操作)。
有没有办法将参数传递给我的信号捕捉器?或者我是否必须放弃信号,而是硬编码我想在模型中执行的操作?
我想做的是这样的:
>>> 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/
我想在删除 File 实例时从存储中删除文件。尝试使用 django 信号。这是我的模型文件: class File(models.Model): orig_name = models.Cha
我有一个模型“评论”和一个在评论被删除时采取行动的信号。该信号在管理中删除评论时执行,但通过 django-rest-framework 删除时不执行。 @receiver(post_delete,
这是在模型文档的 pre_delete 上运行的。当按照建议的最佳实践将此代码放在单独的文件 (signals.py) 中时,它会被皇家忽略。当放入模型文件时,它工作正常。 from django.d
是否可以在连接到 pre_delete 信号的回调中获取登录的 django 用户(调用模型的删除方法)? 最佳答案 pre_delete 信号不会传递请求实例,但您可以添加一个装饰器来添加它,并在
我正在使用信号在对象被删除后执行操作;但是,有时我想根据参数执行不同 操作(不是默认操作)。 有没有办法将参数传递给我的信号捕捉器?或者我是否必须放弃信号,而是硬编码我想在模型中执行的操作? 我想做的
在我的应用程序中,我想跟踪所有被删除的问题。所以我在我的模型文件中创建了一个类(表)。 class Deleted(models.Model): question = models.IntegerFi
我是一名优秀的程序员,十分优秀!