उपयोग count()
में किया गया था था के लिए मौजूद है या नहीं:
sc=scorm.objects.filter(Header__id=qp.id)
if sc.count() > 0:
...
उदाहरण पर लाभ len()
, है कि क्वेरीसमूह अभी तक मूल्यांकन नहीं किया गया है:
count()
पर्दे के पीछे एक SELECT COUNT(*)
करता है, ताकि आप हमेशा नहीं बल्कि अजगर वस्तुओं में रिकॉर्ड के सभी लोड हो रहा है और परिणाम पर len()
बुला से count()
उपयोग करना चाहिए।
यह ध्यान में रखते हुए, When QuerySets are evaluated पढ़ने योग्य हो सकता है।
यदि आप get()
का उपयोग करते हैं, उदा। scorm.objects.get(pk=someid)
, और वस्तु मौजूद नहीं है, एक ObjectDoesNotExist
अपवाद उठाया है:
from django.core.exceptions import ObjectDoesNotExist
try:
sc = scorm.objects.get(pk=someid)
except ObjectDoesNotExist:
print ...
अद्यतन: यह भी संभव है exists()
उपयोग करने के लिए:
if scorm.objects.filter(Header__id=qp.id).exists():
....
रिटर्न True
अगर क्वेरीसमूह किसी भी शामिल परिणाम, और False
यदि नहीं। यह क्वेरी को सबसे आसान और तेज़ तरीके से में करने की कोशिश करता है, लेकिन यह सामान्य क्वेरीसेट क्वेरी के समान क्वेरी को निष्पादित करता है।
स्रोत
2010-04-22 12:07:16
की [क्या एक वस्तु 404 लौटाने के बिना एक Django दृश्य में मौजूद रहने पर मान्य करने के लिए सही तरीका है संभावित डुप्लिकेट? ] (http://stackoverflow.com/questions/639836/what-is-the-right-way-to- validate-if-an-object-exists-in-a-django-view-without-r) – Wtower