यदि आप queryset.delete()
विधि का उपयोग कर रहे हैं, तो Django पूर्व/post_delete सिग्नल भेज रहा है, लेकिन क्या इसे queryset.update()
पर पूर्व/post_save भी नहीं भेजना चाहिए?Django: queryset.update पर सिग्नल
उत्तर
शायद यह होना चाहिए, लेकिन ऐसा नहीं है। .update() QuerySet में अलग-अलग ऑब्जेक्ट्स पर .save() विधि को कॉल नहीं करता है, और इसके बजाय सभी को एकल SQL कॉल (अद्यतन, जैसा होता है) में अपडेट करता है। चूंकि यह .save() का उपयोग नहीं करता है, इसलिए यह पूर्व-और पोस्ट-सेव सिग्नल को कॉल करने के लिए असंगत होगा। मैं निश्चित रूप से उपयोग-मामलों की कल्पना कर सकता हूं जिसमें कोई ऐसा कर सकता है, लेकिन मैं उन मामलों की कल्पना भी कर सकता हूं जिनमें कोई नहीं होगा। ऐसा लगता है कि प्री-एंड-सेव सिग्नल को कॉल नहीं करना यहां सही व्यवहार है क्योंकि यह प्रोग्रामर के लिए अधिक लचीलापन छोड़ देता है। उन संकेतों को मैन्युअल रूप से ट्रिगर करना मुश्किल नहीं है, और मुझे लगता है कि यह निश्चित रूप से एक बेहतर डिजाइन निर्णय है कि प्रोग्रामर को वांछित व्यवहार प्राप्त करने के लिए सिग्नल ट्रिगर करना याद रखें, ताकि वे अवांछित व्यवहार से बचने के लिए संकेतों को डिस्कनेक्ट करना याद रखें।
- 1. django सिग्नल या अधिसूचना
- 2. अजवाइन में Django सिग्नल
- 3. Django post_save() सिग्नल कार्यान्वयन
- 4. Django सिग्नल बनाम ओवरराइडिंग विधि
- 5. सिग्नल
- 6. सिग्नल सिग्नल: सिग्नल हैंडलर
- 7. नई प्रविष्टि के लिए Django सिग्नल केवल
- 8. Django: सिग्नल वास्तव में क्या हैं?
- 9. Django: सिग्नल भेजा जा रहा है - प्रलेखन
- 10. सिग्नल बनाम सिग्नल 2
- 11. सिग्नल
- 12. सिग्नल
- 13. सिग्नल
- 14. सिग्नल हैंडलर में अपवाद का सामना करते समय मैं Django सिग्नल हैंडलर चुपचाप विफल कैसे करूं?
- 15. Django सिग्नल एक बार उत्सर्जित, दो बार प्राप्त किया - क्यों?
- 16. उपयोगकर्ता विवरण अद्यतन के लिए django सिग्नल बनाना
- 17. Django ऐप इनटाइलाइजेशन कोड (सिग्नल से कनेक्ट करने की तरह)
- 18. django: पोस्ट-सेव सिग्नल का उपयोग करके रिकर्सन
- 19. सिग्नल के साथ Django मॉडल विरासत का उपयोग कैसे करें?
- 20. Django post_save सिग्नल मुझे pre_save डेटा क्यों देता है?
- 21. Django: रिसीवर रिटर्न डेटा सिग्नल कर सकते हैं?
- 22. कई उदाहरणों के साथ AppHarbor पर सिग्नल
- 23. सिग्नल प्राप्त करने पर मैं django टेम्पलेट कैश कुंजी कैसे समाप्त करूं?
- 24. जावा - सिग्नल/स्लॉट तंत्र
- 25. Django
- 26. सिग्नल क्यूटी
- 27. सिग्नल स्टैक
- 28. कोई सिग्नल सिग्नल सीधे किसी अन्य सिग्नल से कनेक्ट करने का कोई तरीका है?
- 29. पायथन - पबब से सिग्नल अलग कैसे हैं?
- 30. क्या पिरामिड में सिग्नल/स्लॉट सिस्टम है
वैसे भी कारण बताए गए कारणों में मुझे लगता है कि यह किसी भी तरह का असंगत व्यवहार है, क्योंकि queryset.delete() विधि भी एक उदाहरण पर डिलीट() को कॉल नहीं करती है, लेकिन यह model.delete() के समान सिग्नल भेजती है! –
इसके अलावा, एक क्वेरीसेट पर एक सेव-संबंधित सिग्नल भेजने में सक्षम होने के लिए, उन्हें अनिवार्य रूप से अपडेट के अलावा तत्वों के लिए चयन करना होगा, थोक अद्यतन विधि होने के लाभों को समाप्त करना होगा। –