我试图在保存后立即更新记录。这个例子看似毫无意义,但想象一下,我们需要使用一个API的数据被保存到获得一些额外的信息和更新的记录后:django中的post_save立即更新实例
def my_handler(sender, instance=False, **kwargs):
t = Test.objects.filter(id=instance.id)
t.blah = 'hello'
t.save()
class Test(models.Model):
title = models.CharField('title', max_length=200)
blah = models.CharField('blah', max_length=200)
post_save.connect(my_handler, sender=Test)
所以“额外”字段应该设置为“你好”每次保存后。正确?但它不起作用。
任何想法?
也许你可以描述它是如何工作的?乍一看,它似乎会造成一个无限循环,因为post_save调用保存,它应该调用post_save等。也许Django阻止递归? – 2009-10-28 23:21:36
我在那里看到一个无限循环。在t.save()发送post_save信号之后,猜猜哪个函数被调用... – stefanw 2009-10-28 23:22:04
哦,我印象中Django不会让第二个保存触发post_save呢?我猜不会。在这种情况下,你是对的。这将是一个无限循环。但我没有看到循环或任何东西。 – givp 2009-10-28 23:28:53