You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 07:18:03