我希望在保存此对象(在此示例中为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
。
但是我需要带有新数据的实例。
答案 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