用新实例保存对象后的Django调用方法

时间:2015-05-27 23:05:39

标签: django django-models signals

我希望在保存此对象(在此示例中为Question)后调用方法。 这就是我得到的:

class Question(models.Model):
    ...

    def after_save(sender, instance, *args, **kwargs):
        some_method(instance)

post_save.connect(Question.after_save, sender=Question)

它有点工作。但问题是instance数据是旧数据(与保存前相同)。因此some_method(instance)获取旧的instance。 但是我需要带有新数据的实例。

2 个答案:

答案 0 :(得分:2)

从post_save信号调用的方法应该在Model之外。您可以将该方法放在models.py中或其他文件中,例如signals.py

class Question(models.Model):
    ...
    def some_method(self):
        return "hello"

def question_saved(sender, instance, *args, **kwargs):
    instance.some_method()

post_save.connect(question_saved, sender=Question)

答案 1 :(得分:1)

您可以覆盖保存方法,并在保存对象后调用您想要的内容

以下是相关链接:Django. Override save for model