如何在Django模型的save方法第一次调用时运行代码?
我记得之前好像看到过一个关于这个问题的帖子,但我找不到了,所以我来问一下:
在Django框架中,怎么才能在一个新的模型实例被保存到数据库时运行一些代码呢?
我知道我可以写一个自定义的 MyModel().save()
方法,这样每次保存模型实例的时候都能运行一些代码。但是,我想知道怎么才能只在模型实例第一次被保存的时候运行代码呢?
2 个回答
4
哦,对了:这个 post_save
信号 会传递一个叫做 created
的参数。如果这个参数是 True
,那就说明这个实例是通过调用 save()
方法新创建的。
4
一开始我觉得Django的文档很难理解,这里有一个更清晰的例子。
from django.db.models.signals import post_save
from yourapp.models import YourModel
def model_created(sender, **kwargs):
the_instance = kwargs['instance']
if kwargs['created']:
do_some_stuff(the_instance)
post_save.connect(model_created, sender=YourModel)