2012-05-20 12 views
33

मुझे Django में नव निर्मित वस्तुओं पर कुछ पृष्ठभूमि पोस्ट-प्रोसेसिंग करने की आवश्यकता है। यह पोस्ट-प्रोसेसिंग केवल नई ऑब्जेक्ट्स पर चलनी चाहिए, न कि ऑब्जेक्ट्स जो अभी अपडेट हैं।Django: मैं कैसे बता सकता हूं कि post_save सिग्नल एक नई वस्तु पर ट्रिगर करता है या नहीं?

मुझे पता है कि pre_save में मैं जांच सकता हूं कि ऑब्जेक्ट में आईडी है, अगर यह नहीं है तो यह एक नई वस्तु है। लेकिन समस्या यह है कि पोस्ट-प्रोसेसिंग में मुझे आईडी तक पहुंच की आवश्यकता है (ताकि मैं परिणामों को डेटाबेस में वापस सहेज सकूं)।

मैं इसे साफ तरीके से कैसे कर सकता हूं? https://docs.djangoproject.com/en/dev/ref/signals/#post-save

वहाँ एक created नामित तर्क जो True पर सेट हो जाएगा अगर यह एक नई वस्तु है:

+2

यह वास्तविक को बचाने के बाद बिल्कुल भी प्रसंस्करण करने के लिए संभव है? फिर post_save, https://docs.djangoproject.com/en/dev/ref/signals/#django.db.models.signals.post_save का उपयोग करें। यह बुलियन है कि यह कहना है कि यह नया है या सिर्फ एक अपडेट है। – andersem

उत्तर

46

डॉक्स पर एक नज़र डालें।

+0

धन्यवाद! मैंने यह खो दिया। :-) –

10

Docs के रूप में कहा गया है और @seler ने बताया है, लेकिन एक उदाहरण के साथ:

def keep_track_save(sender, instance, created, **kwargs): 
    action = 'save' if created else 'update' 
    save_duplicate((instance.id, instance.__class__.__name__, action)) 

post_save.connect(keep_track_save, sender=Group) 
संबंधित मुद्दे

 संबंधित मुद्दे