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

如何在Django应用中正确为Order模型连接post_save信号?

解决Django post_save信号中无法获取Order模型字段的问题

你当前的信号处理器已经接收到了保存后的Order实例,只是没通过instance参数去访问字段。instance就是刚完成保存操作的Order模型对象,直接用它就能获取billing_status、created等所有字段的值。

修改信号处理器代码如下:

from django.db.models.signals import post_save
from django.dispatch import receiver
from orders.models import Order


@receiver(post_save, sender=Order)
def inventory_handler(sender, instance, created, *args, **kwargs):
    print('First step')
    # 直接通过instance访问模型字段
    print(f"订单创建时间: {instance.created}")
    print(f"支付状态: {instance.billing_status}")
    print(f"订单总金额: {instance.total_paid}")
    # 其他字段可按同样方式访问,比如instance.full_name、instance.phone等
    print(args, kwargs)

额外验证要点:

  • 确保项目settings.py的INSTALLED_APPS中,你的应用是用orders.apps.OrdersConfig注册的,而非直接写orders——只有这样,apps.py里的ready方法才会执行,信号才能正确连接。
  • 如果是更新订单触发的信号,kwargs里的update_fields会列出本次修改的字段;如果是批量更新操作,post_save信号不会被触发,这种场景下需要单独处理。

内容的提问来源于stack exchange,提问作者Alex

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 02:12:04