2009-07-08 14 views
37

मुझे get_or_create() जैसी कुछ चीज़ों का उपयोग करने की आवश्यकता है, लेकिन समस्या यह है कि मेरे पास बहुत से फ़ील्ड हैं और मैं डिफ़ॉल्ट सेट नहीं करना चाहता (जो वैसे भी समझ में नहीं आता), और यदि मैं नहीं करता डिफ़ॉल्ट सेट करें यह एक त्रुटि देता है, क्योंकि यह ऑब्जेक्ट को तुरंत स्पष्ट रूप से सहेजता है।क्या get_or_create() को तुरंत सहेजना है? (Django)

मैं फ़ील्ड को शून्य = सही पर सेट कर सकता हूं, लेकिन मुझे शून्य फ़ील्ड नहीं चाहिए।

क्या कोई अन्य विधि या कोई अतिरिक्त पैरामीटर है जो get_or_create() पर भेजा जा सकता है ताकि यह किसी ऑब्जेक्ट को तुरंत चालू कर सके, लेकिन जब तक मैं इसे सेव() पर कॉल नहीं करता तब तक इसे सहेजता नहीं है?

धन्यवाद।

उत्तर

37

तुम सिर्फ कर सकते हैं:

try: 
    obj = Model.objects.get(**kwargs) 
except Model.DoesNotExist: 
    obj = Model(**dict((k,v) for (k,v) in kwargs.items() if '__' not in k)) 

जो काफी क्या get_or_create करता है, बिना प्रतिबद्ध।

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