मैं इसे सहेजने के बाद रिकॉर्ड को तुरंत अपडेट करने का प्रयास कर रहा हूं। इस उदाहरण व्यर्थ प्रतीत लेकिन कल्पना के बाद डेटा के लिए कुछ अतिरिक्त जानकारी प्राप्त करने और रिकॉर्ड को अपडेट करने सहेजा जाता है हम एक एपीआई का उपयोग करने की आवश्यकता हो सकती: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 रिकर्सन को रोक रहा है? –
मुझे वहां एक अनंत लूप दिखाई देता है। T.save() के बाद एक post_save सिग्नल भेजा जाता है, अनुमान लगाएं कि कौन सा फ़ंक्शन कॉल किया जाता है ... – stefanw
ओह, मैं इंप्रेशन के तहत था कि Django दूसरी सहेजने को फिर से सहेजने नहीं देगा? मुझे नहीं लगता। इस मामले में, आप सही हैं। यह एक अनंत लूप होगा। लेकिन मैं लूप या कुछ नहीं देख रहा हूँ। – givp