django - is there a difference between MyModel.objects.filter(pk=1) and MyModel.objects.get(pk=1)? -
क्या परिणाम के बीच में कोई अंतर है:
MyModel.objects.filter (pk = 1)
और
MyModel.objects.get (pk = 1)
यदि कोई नहीं है अंतर, तो क्यों करता है .get () विधि मौजूद है?
.get () हमेशा वह वस्तु देता है अगर यह मौजूद है (और यदि बिल्कुल एक है)। यह एक अपवाद भी उठाता है अगर यह अस्तित्व में नहीं है। उदाहरण के लिए
blah = MyModel.objects.get (pk = 1)
blah MyModel का एक उदाहरण है दूसरी तरफ .filter () एक त्रुटि नहीं लौटाता है अगर यह मौजूद नहीं है।
blah = MyModel.objects.filter (pk = 1234234234)
< P> फिर ब्ला एक खाली क्वेरी है आप कॉल करके इसे चेक कर सकते हैं। Count () blah पर यदि blah.count () == 0 का अर्थ है कि 12 9 0234234 कुंजी के साथ कोई मायमोल्ड आइटम नहीं है। इसी प्रकार, यदि उस क्वेरी के साथ कई आइटम हैं तो: blah = MyModel.objects.filter (Name__contains = "Brian")
आपको एक क्वेरी परिणाम प्राप्त होता है जिसे प्रत्येक परिणाम प्राप्त करने के लिए अंतःस्थापित किया जा सकता है:
bl के लिए प्रिंट: प्रिंट बी.नाम
इसके अलावा, एक और दिलचस्प तरीका है कि .get () है .get_or_create () इसके साथ आप कह सकते हैं:
blah, created = MyModel.objects.get_or_create (name = "Brian Ray", cool = False, fun = true)
अगर वहां पहले से ही एक ब्रायनरेय है जो आमतौर पर। बस उस उदाहरण देता है; अन्यथा, यह इसे बनाता है सूचना यह दो चीजें वापस करती है दूसरा, सिर्फ एक झंडा है, जिससे फोन करने वाले को पता चले कि वास्तव में क्या हुआ है।
एचटीएच, ब्रायन रे
Comments
Post a Comment