2012-03-30 30 views
77

मैं हमेशा पढ़ा है कि मैंDjango मॉडल प्रबंधक object.create दस्तावेज कहां है?

model = Model(a=5, b=6) 
model.save() 

का उपयोग करना चाहिए लेकिन मैं अभी देखा है एक प्रबंधक समारोह, बनाते हैं, क्योंकि मैं इसे का उपयोग कर एक खुला स्रोत Django एप्लिकेशन को देखा।

model = Model.objects.create(a=5, b=6) 
print model.pk 
1 

तो क्या इसका उपयोग करने का सुझाव दिया गया है? या यह अभी भी .save विधि का उपयोग करना पसंद है। मैं उस ऑब्जेक्ट्स का अनुमान लगा रहा हूं। सिक्योरेट इसे बनाने की कोशिश करेगा चाहे कोई फर्क नहीं पड़ता, जबकि पीके निर्दिष्ट होने पर सेव एक मौजूदा ऑब्जेक्ट को सहेज सकता है।

इन डॉक्स कि मैंने पाया हैं: https://docs.djangoproject.com/en/dev/topics/db/queries/#creating-objects

+11

इस प्रश्न को कम वोट क्यों मिला? मैं अभी एक ही प्रश्न के साथ यहां पहुंचा और यह उपयोगी पाया। – Ferguzz

+4

मुझे यह भी पता नहीं था, शायद लोगों ने सोचा था कि यह बेवकूफ और स्पष्ट था। इसके बारे में बहुत परवाह नहीं है: पी मुझे मेरा जवाब मिल गया है। मैंने बिना किसी परिणाम के खोज की, इसलिए मैंने पूछा। –

उत्तर

33

यह पेज "QuerySet API reference", प्रलेखन सूचकांक से जुड़ा हुआ में है।

+0

पेज नहीं मिला। – Jand

1

असल में, ये दो विधियां equivalent हैं। Model.objects.create का उपयोग पसंद किया जा सकता है क्योंकि यह Django की शैली के लिए अधिक उपयुक्त है।

40
p = Person.objects.create(first_name="Bruce", last_name="Springsteen") 

बराबर करने के लिए:

p = Person(first_name="Bruce", last_name="Springsteen") 
p.save(force_insert=True) 

force_insert मतलब है कि एक नई वस्तु हमेशा बनाया जाएगा।
आम तौर पर आपको इसके बारे में चिंता करने की आवश्यकता नहीं होगी। हालांकि, यदि आपका मॉडल में आपके द्वारा सेट किया गया मैन्युअल प्राथमिक कुंजी मान होता है और यदि वह मान डेटाबेस में पहले से मौजूद है, तो बनाने के लिए एक कॉल इंटीग्रिटी एरर के साथ विफल हो जाएगी क्योंकि प्राथमिक कुंजी अद्वितीय होनी चाहिए। यदि आप मैन्युअल प्राथमिक कुंजी का उपयोग कर रहे हैं तो अपवाद को संभालें।

1

अनिवार्य रूप से वही करता है। बनाने के लिए स्रोत कोड नीचे है।

def create(self, **kwargs): 
    """ 
    Creates a new object with the given kwargs, saving it to the database 
    and returning the created object. 
    """ 
    obj = self.model(**kwargs) 
    self._for_write = True 
    obj.save(force_insert=True, using=self.db) 
    return obj 

यह एक उदाहरण बनाता है और फिर इसे बचाता है।

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