Django doesNotExist


85

मैं "DoNotExist त्रुटियों" को समझने की कोशिश कर रहा हूं, मैंने बिना किसी उत्तर के परिणामों का प्रबंधन करने का सही तरीका खोजने की कोशिश की है, हालांकि मैं "DoNotExist" या "ऑब्जेक्ट hast नहीं विशेषता DoNNotExists" पर मुद्दों को जारी रखता हूं।

from django.http import HttpResponse
from django.contrib.sites.models import Site
from django.utils import simplejson

from vehicles.models import *
from gpstracking.models import *


def request_statuses(request):

    data = []
    vehicles = Vehicle.objects.filter()
    Vehicle.vehicledevice_
    for vehicle in vehicles:
        try:
            vehicledevice = vehicle.vehicledevice_set.get(is_joined__exact = True)
            imei = vehicledevice.device.imei
            try:
                lastposition = vehicledevice.device.devicetrack_set.latest('date_time_process')
                altitude = lastposition.altitude
                latitude = lastposition.latitude
                longitude =  lastposition.longitude
                date_time_process = lastposition.date_time_process.strftime("%Y-%m-%d %H:%M:%S"),
                date_time_created = lastposition.created.strftime("%Y-%m-%d %H:%M:%S")
            except Vehicle.vehicledevice.device.DoesNotExist:
                lastposition = None
                altitude = None
                latitude = None
                longitude = None
                date_time_process = None
                date_time_created = None
        except Vehicle.DoesNotExist:
            vehicledevice = None
            imei = ''

        item = [
                vehicle.vehicle_type.name,
                imei,
                altitude,
                "Lat %s Lng %s" % (latitude, longitude),
                date_time_process,
                date_time_created,
                '', 
                ''
                ]
        data.append(item)
    statuses = {
                "sEcho": 1,
                "iTotalRecords": vehicles.count(),
                "iTotalDisplayRecords": vehicles.count(),
                "aaData": data
                } 
    json = simplejson.dumps(statuses)
    return HttpResponse(json, mimetype='application/json')

संबंधित: stackoverflow.com/a/2143599/3015186
np8

जवाबों:


138

यह रेखा

 except Vehicle.vehicledevice.device.DoesNotExist

इसका मतलब यह है कि DoNotExist अपवाद के लिए डिवाइस का उदाहरण देखें, लेकिन कोई नहीं है, क्योंकि यह वर्ग स्तर पर है, आप कुछ ऐसा चाहते हैं

 except Device.DoesNotExist

मैंने ऐसा करने की कोशिश की है, लेकिन फ़ायरफ़ॉक्स पर डिबग मुझे देता है: DoNotExist at / ट्रैकिंग / अनुरोध / स्टेटस व्हीकलडेविस मैचिंग क्वेरी मौजूद नहीं है। लुकअप पैरामीटर {'is_joined__exact': True}
कार्लोस

यह अपेक्षित है और केवल इसका मतलब है कि आप एक ऐसी वस्तु का अनुरोध करते हैं जो वास्तव में मौजूद नहीं है। आपको अपने डेटा को देखना चाहिए, या इसके पीछे के तर्क
दिमित्री शेवचेंको

1
आपकी मदद के लिए धन्यवाद, मैंने ObjectDoesNotExist का उपयोग करते हुए एक अपवाद प्रबंधन पर अपना जवाब पाया है। आपके समय के लिए बहुत बहुत धन्यवाद
कार्लोस

मेरा मतलब इस उत्तर को उभारना था, लेकिन गलती से ह्रास हो गया। जैसा कि मैंने बहुत देर से पाया कि मैं अपने वोट को नीचे से ऊपर तक, माफ करने में असमर्थ हूं ...
LMB

121

मैंने इस तरह से ObjectDoesNotExist का उपयोग करके इस समस्या का समाधान ढूंढ लिया है

from django.core.exceptions import ObjectDoesNotExist
......

try:
  # try something
except ObjectDoesNotExist:
  # do something

इसके बाद, मेरा कोड आवश्यकतानुसार काम करता है

किसी भी तरह से धन्यवाद, आपका पोस्ट मेरी समस्या को हल करने में मेरी मदद करता है


24
यह काम करेगा, लेकिन यह वास्तव में सबसे अच्छा तरीका नहीं है। आपको यह पता लगाना चाहिए कि ऑब्जेक्ट किस वर्ग द्वारा दर्शाया गया है vehicledevice.device.devicetrack_set, और फिर पकड़ें <That class>.DoesNotExist
मियादी

मुझे लगता है कि कोशिश कर रहा था, मैं भी अनुमान लगाने की कोशिश कर रहा था, क्योंकि मैं समाधान नहीं ढूंढ सका, कुछ डॉक्टर को पढ़ने के बाद मैंने पाया कि क्या आप कृपया कोड को संपादित करने की कोशिश कर सकते हैं
कार्लोस

1
उस वर्ग को देखें जो प्रतिनिधित्व करता है vehicledevice.device, और पता devicetrackलगाता है कि विशेषता के लिए संबंधित मॉडल क्या है।
मियादी

(यह निर्धारित करना मेरे लिए संभव नहीं है कि आपके मॉडल की परिभाषा के बिना।)
मिपाडी

1
मुझे लगता है कि यह महत्वपूर्ण है ताकि आप अनजाने में DoesNotExistकिसी और चीज के लिए पकड़ न रहे हों ... पूरे "स्पष्ट रूप से निहित" ज़ेन सामान से बेहतर है
गॉर्डन

9

मेरा मानना ​​है कि समाधान सबसे अच्छा और अनुकूलित है:

प्रयत्न:
   #तुम्हारा कोड
"ModelName" को छोड़कर ।DoesNotExist:
   #तुम्हारा कोड

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