Django中post_save信号保存后如何获取数据?
Django post_save 信号机制实操说明
- post_save 信号会在模型实例执行
save()方法之后触发,不管是新增记录还是更新已有记录都会触发这个信号。 - 在信号接收器里,通过传入的
instance参数能直接拿到实例的主键(pk),示例代码如下:
from django.db.models.signals import post_save from django.dispatch import receiver from .models import Comment @receiver(post_save, sender=Comment) def post_save_comment(sender, instance, **kwargs): # 获取当前Comment实例的主键 current_pk = instance.pk # 这里可以写基于pk的后续逻辑,比如更新关联数据、生成操作日志等
- 能拿到有效pk的原因:post_save是在实例完全保存到数据库之后才触发的——如果是新增实例,此时数据库已经为它分配了主键;如果是更新实例,主键本身就存在,所以
instance.pk一定是有效值。
内容的提问来源于stack exchange,提问作者paaaaaaaaaaaaaaaaaaaaa
相关产品推荐
相关产品推荐

