如何在Django模型的save方法第一次调用时运行代码?

5 投票
2 回答
3149 浏览
提问于 2025-04-17 10:33

我记得之前好像看到过一个关于这个问题的帖子,但我找不到了,所以我来问一下:

在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)

撰写回答