我定义了两个听众:
def update_dashbaord_modified_date(sender, **kwargs):
"""Listen for changes to Goal, Action, etc. since we
want to update the date modified on Dashbaord when a change occurs."""
... do something ...
post_save.connect(update_dashbaord_modified_date) # Register to listen for post_save signals
post_delete.connect(update_dashbaord_modified_date) # Register to listen for post_delete signals
现在,在对目标进行更改或添加目标(模型类目标)后,我希望该保存发送信号。这是如何实现的。我不明白它的文档。
由于
答案 0 :(得分:5)
在your_app / signals.py中定义你的信号(引发信号,不听的应用)
from django.dispatch import Signal
my_signal = Signal(providing_args=["instance", "args", "kwargs"])
在你的模型/视图中,从你想要提升信号的位置
...do some processing
my_signal.send(sender=self.__class__, args, kwargs)
# kwargs contains type of action, in your case
# action= 'Added'|'Modified'|'Deleted",
代码中的其他地方(你想听的地方)
my_signal.connect(this_is_my_call_back_method)
答案 1 :(得分:2)
来自django docs:
此代码应该在哪里生效?
你可以把信号处理和 注册码随时随地。 但是,您需要确保这一点 它所在的模块很早就被导入了 因此,信号处理得到 在任何信号需要之前注册 被发送。这使你的应用程序 models.py是个好地方 注册信号处理程序。
您可以在models.py中导入update_dashbaord_modified_date,并在类定义之后将您的方法添加到post_save和post_delete处理程序。
from signals import update_dashbaord_modified_date
class myModel(models.Model):
stuff
post_save.connect(update_dashbaord_modified_date)
post_delete.connect(update_dashbaord_modified_date)