2012-12-20 13 views
6

के बीच अंतर मेरे सभी Django की आवश्यकता है कि सहेजने की विधि को ओवरराइड करने की आवश्यकता है, मैं अपने मॉडल में save() का उपयोग कर रहा हूं। अचानक जब मैं कुछ ऐसा देख रहा था जिसके लिए थोड़ा अतिरिक्त फ्लेयर की आवश्यकता थी, तो किसी ने मेरे व्यवस्थापक वर्ग में save_model() को ओवरराइड करने का सुझाव दिया।सेव और save_model()

मुझे दोनों पर दस्तावेज़ मिला, और मैंने तुरंत देखा कि तर्क अलग हैं। save_model() केवल तब कहा जाता है जब मॉडल व्यवस्थापक से सहेजा जाता है? और जब भी मॉडल बचाया जाता है तो save() विधि कहा जाता है?

अद्यतन

तो मैं समझ गए होंगे कि जब व्यवस्थापक से बचत। दोनों 'सेव' और 'save_model()' को कॉल किया जाता है। ऐसा प्रतीत होता है कि 'save_model()' पहले कॉल किया जाता है। मेरे विशिष्ट एप्लिकेशन में, मैं pre_save सिग्नल का उपयोग कर रहा हूं, और 'सेव()' ओवरराइड करता हूं। अब मैं 'save_model()' ओवरराइड में जोड़ना चाहता हूं। यह उन सभी को ओवरराइड और सिग्नल की बातचीत और आदेश है जो मुझे भ्रमित कर रहा है।

उत्तर

3

save()Model की एक विधि है जबकि save_model()ModelAdmin का एक तरीका है ... हाँ।

+1

ठीक है, मुझे पता है कि। लेकिन मौलिक मतभेद क्या हैं? दोनों क्यों मौजूद हैं? दूसरे की तुलना में कब कहा जाता है? – Jglstewart

+0

और यदि आप व्यवस्थापक से बचत कर रहे हैं .. पहले क्या कहा जाता है? save_model() या सहेजें()? – Jglstewart

+1

एक मौजूद है ताकि व्यवस्थापक-विशिष्ट/केवल नियम लागू किए जा सकें, और दूसरा मौजूद है ताकि मॉडल के सभी उपयोगों को प्रभावित करने वाले नियम लागू किए जा सकें। –

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