2012-06-18 16 views
11

मैं उपयोगकर्ताओं को ईमेल भेजने के लिए Django के post_save सिग्नल का उपयोग कर रहा हूं जब भी नया आलेख साइट पर जोड़ा जाता है। हालांकि, जब भी मैं पहले से बनाए गए लेखों के लिए save() विधि का उपयोग करता हूं, तब भी उपयोगकर्ता नए ईमेल प्राप्त करते हैं। नई प्रविष्टि को जोड़े जाने पर ही ईमेल प्राप्त करना कैसे संभव है?नई प्रविष्टि के लिए Django सिग्नल केवल

अग्रिम

उत्तर

28

post_save सिग्नल एक बूलियन created तर्क प्राप्त करता है जो इंगित करता है कि सहेजे गए instance बनाए गए थे या नहीं।

def my_callback(sender, **kwargs): 
    if kwargs['created']: 
     print('Instance is new') 
+0

बहुत बहुत धन्यवाद! इसने एकदम जादू की तरह काम किया। –

0

instance.id के लिए जांच की जा रही धन्यवाद करने के लिए कि उदाहरण 'नई' है का एक अच्छा तरीका है। यह केवल तभी काम करता है जब आप अपने डेटाबेस द्वारा स्वत: जेनरेट किए गए आईडी का उपयोग करते हैं।

+0

पोस्ट_सेव सिग्नल आईआईआरसी पर काम नहीं करेगा - उस समय तक उदाहरण में पहले से ही एक आईडी है। –

2

https://docs.djangoproject.com/en/dev/ref/signals/#django.db.models.signals.post_save

वहाँ पर एक नजर डालें वास्तव में एक तर्क संकेत के साथ पारित कर दिया है "बनाया: एक बूलियन; विशुद्ध एक नया रिकार्ड बनाया गया था, तो"।

मुझे लगता है कि यह चाल चलनी चाहिए।

+0

धन्यवाद क्रिस्टोफ, मुझे इसे ध्यान से पढ़ना चाहिए था। –

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