关于 Django 的信号 post_save 的问题,如何判断是第一次保存?

2018-03-28 13:48:35 +08:00
 Hopetree

我写了一个信号,每当有一个模型的实例生成的时候就会去生成一个跟他有关的另一个模型,信号就是用的post_save来判断的,但是问题来了,就是每当我去修改那个模型之后,它就会又一次生成一个新的模型,就是说它又激活了信号post_save。所以我该怎么判断只有当这个模型的实例第一次生成的时候才激活这个信号呢?

3911 次点击
所在节点    Django
4 条回复
jimmyye
2018-03-28 14:03:51 +08:00
https://docs.djangoproject.com/en/1.11/ref/signals/#post-save
created
A boolean; True if a new record was created.
Hopetree
2018-03-28 14:08:59 +08:00
@jimmyye created 可以判断是否是新生成的实例啊,这个我还真的不清楚,我先去试试吧。我本来想试试把 post_save 换成 post_init 的,我理解的这个信号就是当实例第一次生成的时候会调用,以后修改什么的都不会再调用,因为它是__init__()里面调用的,不知道我的理解有没有错
jimmyye
2018-03-28 14:37:41 +08:00
那个是每次调用__init__()(实例化)后触发的,不是创建(保存到数据库)后。
Hopetree
2018-03-28 14:54:49 +08:00
@jimmyye 非常感谢,created 这个参数的确是用啦判断是否是新生成实例了,我的问题已经解决了
如下写的
```
def notify_handler(sender, instance, created,**kwargs):
if created:
do something
```

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/442107

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX