Python 当Django模型’;是否第一次调用了s save方法?
我可以发誓我以前读过关于这个的问题,但我找不到,所以: 在Django中,当一个新的模型实例保存到数据库中时,如何运行一些代码Python 当Django模型’;是否第一次调用了s save方法?,python,django,django-models,Python,Django,Django Models,我可以发誓我以前读过关于这个的问题,但我找不到,所以: 在Django中,当一个新的模型实例保存到数据库中时,如何运行一些代码 我知道我可以编写一个自定义的MyModel().save()方法,以便在保存模型实例时运行一些代码。但是,只有在第一次保存模型实例时,我如何才能运行代码?啊,是的:传递一个名为created的参数,如果它的实例是通过调用save()创建的,这是True,Django文档一开始对我来说很难探索,这里有一个更明确的例子 from django.db.models.signa
我知道我可以编写一个自定义的
MyModel().save()
方法,以便在保存模型实例时运行一些代码。但是,只有在第一次保存模型实例时,我如何才能运行代码?啊,是的:传递一个名为created
的参数,如果它的实例是通过调用save()
创建的,这是True
,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)
您还可以检查save方法中是否存在self.pk-通常我会根据复杂性进行选择。在自动添加之前设置时间戳(例如:)Hmmmm。我从来都不太喜欢信号(远距离的恐怖动作)。另外,有两种非常不同的方法来实现这一点,一种是覆盖save(),另一种是覆盖一个信号。在model_创建的定义中缺少“:”