Django post_save信号的sender和instance参数具体含义是什么
你的两个猜测均完全正确,对应Django post_save 信号的参数逻辑如下:
sender正是触发本次信号的实例所属的模型类。如果你注册接收器时指定监听User模型的post_save信号,该参数的值就是User类本身。instance正是本次实际执行保存操作的sender类实例。对应你的示例场景,该参数就是本次被保存的User模型实例。
你可以参考以下测试代码自行验证:
from django.db.models.signals import post_save from django.contrib.auth.models import User from django.dispatch import receiver # 注册仅接收User模型post_save信号的接收器 @receiver(post_save, sender=User) def handle_user_save(sender, instance, created, **kwargs): # 验证sender为User类 assert sender == User # 验证instance是User类的实例 assert isinstance(instance, User) # 可直接读取实例的字段值 print(f"已保存用户:{instance.username}")
内容的提问来源于stack exchange,提问作者Alan Evangelista
相关产品推荐
相关产品推荐

