2011-09-29 37 views
1

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

+0

最初的SQL数据钩子不适合你吗? –

+0

我不确定这种方法。但我需要它只运行一次。它会按我的预期工作吗? – vernomcrp

回答

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') 
+0

由于他有一次性使用情况,您还应该指出他有关创建Command的文档,以便他可以根据需要生成信号。 –