Django मॉडल प्रबंधक ऑब्जेक्ट। प्रलेखन कहाँ है?


85

मैं हमेशा पढ़ता हूं कि मुझे उपयोग करना चाहिए

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
इस प्रश्न को डाउन वोट क्यों मिला? मैं बस इसी सवाल के साथ यहां पहुंचा और इसे उपयोगी पाया।
फर्गुज़ज़

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

जवाबों:



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

के बराबर:

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

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


3

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

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

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


1

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.