如何从django捕获创建db信号

时间:2011-09-29 14:14:36

标签: django django-models django-admin

我在django项目工作。我有1个postgresql sql文件,需要在db创建后只运行一次。内置django信号不太适合我的情况。所以我尝试编写自定义django信号,但我不知道如何从这个案例开始。有没有人有一个很好的指导。 ? :)

1 个答案:

答案 0 :(得分:1)

Django docs on signals已经有了显着改善,所以如果你还没有,请看一下。这个过程非常简单。

首先创建您的信号(providing_args允许您指定稍后发送信号时将传递的参数:

import django.dispatch
my_signal = django.dispatch.Signal(providing_args=["first_arg", "second_arg"])

其次,创建一个接收函数:

from django.dispatch import receiver

@receiver(my_signal)
def my_callback(sender, first_arg, second_arg, **kwargs):
    # do something

最后,在您的代码中发送您的信号(self,因为发送方仅适用于您的模型类。否则,只需传递模型类名称):

my_signal.send(sender=self, first_arg='foo', second_arg='bar')