Django - 创建后的多个post_save信号尽管dispatch_uid

时间:2017-09-23 16:04:14

标签: python django django-models django-signals

在创建对象后,我无法防止post_save信号多次触发。

我的信号定义如下:

./gradlew -q hello

信号在orders / apps.py

中导入
Message is
value: null

在1 Order.create:

之后打印时将kwargs传递给信号
Message is
value: Hi from Gradle

显然在单个创建中,有一个post_save信号在创建args时触发:True和1 with created:False。我不认为问题是信号可能被多次导入,因为我提供了一个dispatch_uid,并且在同一个文件中定义的post_delete信号在一次删除时不会被多次触发。

任何人都可以告诉我为什么会这样吗?感谢

1 个答案:

答案 0 :(得分:0)

您的信号post_save不是问题,多次保存触发它。

从我所看到的,您正在进行2次保存,其中创建了第一次创建的对象,而第二次更新的对象在没有任何字段更改的情况下进行了更新。

  

创建

     

布尔值;如果创建了新记录,则为True。

     

update_fields

     

要传递给Model.save()的更新字段集,   如果update_fields未传递给save(),则为None。