मैं कुछ सहयोगियों के साथ इस पर बहस कर रहा था। क्या Django में एक वस्तु को पुनः प्राप्त करने का एक पसंदीदा तरीका है जब आप केवल एक की उम्मीद कर रहे हैं?
दो स्पष्ट तरीके हैं:
try:
obj = MyModel.objects.get(id=1)
except MyModel.DoesNotExist:
# We have no object! Do something...
pass
तथा:
objs = MyModel.objects.filter(id=1)
if len(objs) == 1:
obj = objs[0]
else:
# We have no object! Do something...
pass
पहली विधि व्यवहारिक रूप से अधिक सही लगती है, लेकिन नियंत्रण प्रवाह में अपवादों का उपयोग करती है जो कुछ ओवरहेड का परिचय दे सकती हैं। दूसरा अधिक गोल चक्कर है, लेकिन कभी भी अपवाद नहीं उठाया जाएगा।
इनमें से कौन सा विचार बेहतर है? कौन सा अधिक कुशल है?
QS.get()
है कि अच्छा है। 2. विवरण मामला: क्या "केवल एक ही उम्मीद करना" का अर्थ है हमेशा 0-1 ऑब्जेक्ट्स, या 2+ ऑब्जेक्ट्स होना संभव है और उस मामले को भी संभाला जाना चाहिए (इस मामलेlen(objs)
में एक भयानक विचार है)? 3. एक बेंचमार्क के बिना ओवरहेड के बारे में कुछ भी नtry/except