2011-01-16 13 views
20

मैंने Django में अपने मॉडल पर get_or_create फ़ंक्शन का उपयोग किया है। यह फ़ंक्शन दो मान देता है। एक वस्तु स्वयं है और दूसरा एक बूलियन झंडा है जो इंगित करता है कि मौजूदा वस्तु को पुनर्प्राप्त किया गया था या कोई नया बनाया गया था।Django में get_or_create फ़ंक्शन दो मानों को कैसे लौटाता है?

आम तौर पर, एक फ़ंक्शन एक मान या tuple, list या एक शब्दकोश जैसे मानों का संग्रह वापस कर सकता है।

get_or_create जैसे फ़ंक्शन दो मान वापस कैसे करता है?

+4

यह वास्तव में एक ट्यूपल देता है .. – shanyu

+1

यह दो तत्वों के साथ एक टुपल लौटाता है 'वापसी (is_exit, ऑब्जेक्ट) ' – mouad

+0

इसे आज़माएं:' a = 1, 2; प्रिंट प्रकार (ए) '। यह वास्तव में एक tuple है। – TryPyPy

उत्तर

29

get_or_create() बस दो मानों का एक टुपल देता है। इसके बाद आप documentation उदाहरण की तरह, दो नाम करने के लिए दो टपल प्रविष्टियों बाध्य करने के लिए उपयोग कर सकते हैं sequence unpacking:

p, created = Person.objects.get_or_create(
    first_name='John', last_name='Lennon', 
    defaults={'birthday': date(1940, 10, 9)}) 
4

यह एक टपल देता है। ऐसा लगता है जैसे आप जानते थे कि फ़ंक्शन ऐसा कर सकते हैं, बस यह नहीं कि आप परिणाम को दो चरों पर सीधे सौंप सकते हैं!

# Returns a tuple of (object, created), where object is the retrieved 
# or created object and created is a boolean specifying whether a new 
# object was created. 

obj, created = Person.objects.get_or_create(first_name='John', last_name='Lennon', 
        defaults={'birthday': date(1940, 10, 9)}) 
3

tuples का उपयोग करते हुए/टपल unpacking अक्सर एक से अधिक मूल्य लौटने का एक quite "pythonic" way के रूप में माना जाता है:

get_or_create के लिए Django दस्तावेज़ देखें।

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