2009-07-06 99 views

回答

9

有一個稱爲 django-debug-toolbar一個Django應用程序,它在所有Django的頂部增加了一個小工具欄服務提供相關頁面的渲染中,後端信息的網頁,如多少查詢被執行了多少時間,他們各拿了,它也打印出信號。我在我的應用程序中不使用信號,所以我從未使用過該功能,但它在那裏。

27

它並沒有真正暴露在文檔中,但Signal只是一個包含在事件上調用的接收器列表的類。您可以手動檢查這個列表:

from django.db.models.signals import * 

for signal in [pre_save, pre_init, pre_delete, post_save, post_delete, post_init, post_syncdb]: 
    # print a List of connected listeners 
    print signal.receivers 
0

如果您只想列出特定型號上特定信號的連接接收器,您可以查看_live_receivers。舉例來說,如果要列出一個型號命名爲MyModel的連接post_save鉤子,你可以這樣做:

from django.db.models.signals import post_save 
from models import MyModel 
print(post_save._live_receivers(MyModel)) 

我發現在Django的源代碼,這種方法通過尋找如何has_listeners作品:https://github.com/django/django/blob/3eb679a86956d9eedf24492f0002de002f7180f5/django/dispatch/dispatcher.py#L153

相關問題