2

我阅读了django docs关于signals并为我的模型编写了这段代码Car

@receiver(request_finished)
def signal_callback(sender, **kwargs):
    print 'Save Signal received'


@receiver(post_save, sender=Car)
def signal_handler(sender, **kwargs):
    pass


request_finished(signal_callback, sender=car, dispatch_url="Unique save id")

但问题是,当我启动服务器并打开管理员时,我会'Save Signal received'在终端中获得很多信息。我想知道的是我只限制signal_handlerpost_save。但是,即使没有保存任何内容,该消息仍会出现很多次。我不明白这一点。

注意:我会诚实的。我理解了其中的一部分,而不是文档中的所有内容。

4

2 回答 2

5

有一种更简单的方法来绑定post_save信号

from django.db.models.signals import post_save
from myapp.models import Car

def do_something(sender, **kwargs):
    print 'the object is now saved.'
    car = kwargs['instance'] #now i have access to the object

post_save.connect(do_something, sender=Car)

每次request finished发出 HTTP 请求时都会调用该信号,这很麻烦。

于 2013-06-23T10:00:12.407 回答
2

request_finished将信号绑定到signal_callback. 删除(或注释掉)signal_callback,并更改signal_handler如下。

@receiver(post_save, sender=Car)
def signal_handler(sender, **kwargs):
    print 'Save signal received'
于 2013-06-23T05:31:39.987 回答