sender
通过指定其完整的应用标签来连接接收器时,可以懒惰地引用模型信号模型。例如,应用程序中Answer
定义的 模型polls
可以引用为‘polls.Answer‘
。在处理循环导入依赖项和可交换模型时,这种引用非常方便。pre_init
__init__()
方法的开头发送。sender
args
__init__()
:kwargs
__init__()
:争论 | 值 |
sender |
Poll (班级本身) |
args |
[] (一个空列表,因为没有传递给位置参数__init__() 。) |
kwargs |
{‘question‘: "What‘s up?", ‘pub_date‘: datetime.now()} |
post_init
__init__()
方法在方法完成时发送。sender
instance
sender
instance
raw
True
如果模型完全按照提供的方式保存(即加载夹具时)。不应该查询/修改数据库中的其他记录,因为数据库可能尚未处于一致状态。using
update_fields
Model.save()
,或者None
如果update_fields
未传递给它save()
。sender
instance
created
True
如果创建了新记录。raw
True
如果模型完全按照提供的方式保存(即加载夹具时)。不应该查询/修改数据库中的其他记录,因为数据库可能尚未处于一致状态。using
update_fields
Model.save()
,或者None
如果update_fields
未传递给它save()
。pre_delete
sender
instance
using
pre_delete
sender
instance
using
m2m_changed
ManyToManyField
在模型实例上更改a 时发送。严格来说,这不是一个模型信号,因为它是由它发送的 ManyToManyField
,但由于它补充了 pre_save
/ post_save
和pre_delete
/ post_delete
当跟踪模型的变化时,它包含在这里。sender
ManyToManyField
。定义多对多字段时,将自动创建此类; 您可以使用through
多对多字段中的属性访问它 。instance
sender
的类的实例,也可以ManyToManyField
是与之相关的类的 实例。action
"pre_add"
"post_add"
"pre_remove"
"post_remove"
"pre_clear"
"post_clear"
reverse
model
pk_set
pre_add
,post_add
,pre_remove
和post_remove
的动作,这是一组已被添加到或从关系移除主键值。pre_clear
和post_clear
行动,这是None
。using
Pizza
可以有多个Topping
对象,则建模如下:class Topping(models.Model): # ... pass class Pizza(models.Model): # ... toppings = models.ManyToManyField(Topping) 如果我们连接这样的处理程序: from django.db.models.signals import m2m_changed def toppings_changed(sender, **kwargs): # Do something pass m2m_changed.connect(toppings_changed, sender=Pizza.toppings.through)
争论 | 值 |
sender |
Pizza.toppings.through (中级m2m级) |
instance |
p (Pizza 正在修改的实例) |
action |
"pre_add" (后跟一个单独的信号"post_add" ) |
reverse |
False (Pizza 包含 ManyToManyField ,所以这个调用修改了前向关系) |
model |
Topping (添加到的对象的类 Pizza ) |
pk_set |
{t.id} (因为只添加到关系中)Topping t |
using |
"default" (因为默认路由器在这里发送写入) |
争论 | 值 |
sender |
Pizza.toppings.through (中级m2m级) |
instance |
t (Topping 正在修改的实例) |
action |
"pre_remove" (后跟一个单独的信号"post_remove" ) |
reverse |
True (Pizza 包含 ManyToManyField ,所以这个调用修改了反向关系) |
model |
Pizza (从中删除的对象的类 Topping ) |
pk_set |
{p.id} (因为只从关系中删除)Pizza p |
using |
"default" (因为默认路由器在这里发送写入) |
class_prepared
AppConfig.ready()
在app注册表完全填充后运行,因此无法在该方法中连接接收器。一种可能性是连接它们AppConfig.__init__()
,注意不要导入模型或触发对app注册表的调用。sender
pre_migrate
sender
AppConfig
要迁移/同步的应用程序的实例。app_config
sender
。verbosity
interactive
interactive
是True
,则提示用户在命令行上输入内容是安全的。如果interactive
是False
,侦听此信号的功能不应尝试提示任何内容。using
plan
True
)或已应用(False
)。apps
Apps
在迁移运行之前包含项目状态的实例。应该使用它来代替全局 apps
注册表来检索要对其执行操作的模型。post_migrate
sender
AppConfig
刚刚安装的应用程序的实例。app_config
sender
。verbosity
interactive
interactive
是True
,则提示用户在命令行上输入内容是安全的。如果interactive
是False
,侦听此信号的功能不应尝试提示任何内容。using
default
数据库。plan
True
)或已应用(False
)。apps
Apps
迁移运行后包含项目状态的实例。应该使用它来代替全局 apps
注册表来检索要对其执行操作的模型。class Topping(models.Model): # ... pass class Pizza(models.Model): # ... toppings = models.ManyToManyField(Topping) 如果我们连接这样的处理程序: from django.db.models.signals import m2m_changed def toppings_changed(sender, **kwargs): # Do something pass m2m_changed.connect(toppings_changed, sender=Pizza.toppings.through)
AppConfig
实例作为sender参数,请确保已注册信号 ready()
。AppConfig
对于使用修改集INSTALLED_APPS
(例如,当覆盖设置时)运行的测试,将重新创建s,并且应为每个新AppConfig
实例连接此类信号。request_started
sender
django.core.handlers.wsgi.WsgiHandler
- 处理请求。environ
environ
提供给请求的字典。got_request_exception
sender
request
HttpRequest
对象。原文:https://www.cnblogs.com/limengda/p/11257117.html