मैं सोच रहा हूं कि ऑब्जेक्ट सृजन पर एक Django सिग्नल (जैसे post_save
या post_init
) चुनिंदा रूप से दबाने के लिए संभव है, या वैकल्पिक रूप से, इसे कुछ पैरामीटर भेजें।क्या Django में post_save (या अन्य) सिग्नल को चुनिंदा रूप से दबाना संभव है?
मेरे पास User
ऑब्जेक्ट है, जिसे मेरे कोड में कई अलग-अलग तरीकों और स्थानों में बनाया जा सकता है। इसलिए प्रत्येक User
पर कस्टम Profile
ऑब्जेक्ट स्वचालित रूप से असाइन करने के लिए, मैं post_save
सिग्नल का उपयोग करता हूं। हालांकि, एक विशिष्ट मामले में, अतिरिक्त जानकारी है जिसे मैं बनाए गए Profile
ऑब्जेक्ट से जोड़ना चाहता हूं। इसे post_save
सिग्नल के तर्क के रूप में पास करना बहुत अच्छा होगा, लेकिन यह संभव नहीं दिखता है।
अन्य विकल्प मैन्युअल Profile
वस्तु बनाने के लिए है, लेकिन फिर मैं उस के बाद User
सहेजा जाता है, अन्यथा Profile
एक User
उदाहरण के लिए बाध्य नहीं किया जा सकता की जरूरत है। उदाहरण के लिए, User
उदाहरण सहेजना, सिग्नल द्वारा बुलाए गए फ़ंक्शन के माध्यम से अन्य Profile
को बनाया जा रहा है।
और मुझे सिर्फ Profile
ऑब्जेक्ट नहीं मिला है, क्योंकि इसके परिणामस्वरूप 'Profile' object is unsubscriptable
त्रुटि होती है। कोई सलाह?
अद्यतन:
def createUserProfile(sender, instance, created, **kwargs):
if created:
profile, created = Profile.objects.get_or_create(user=instance)
if extra_param:
profile.extra_param = extra_param
profile.save()
post_save.connect(createUserProfile, sender=User)
def signup(request):
...
extra_param = 'param'
user.save()
मैं कैसे createUserProfile विधि है, जहां यह संग्रहीत करने के लिए है करने के लिए signup
विधि में चर extra_param
मिलता है:
यहाँ एक संभव स्थिति का एक उदाहरण है Profile
ऑब्जेक्ट के हिस्से के रूप में?
+1। मुझे इसका जवाब जानना अच्छा लगेगा। – PeanutButterJelly