我試圖在保存後立即更新記錄。這個例子看似毫無意義,但想象一下,我們需要使用一個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