2013-04-24 7 views
39

मुझे "DoNotExist त्रुटियों" को समझने की कोशिश करने में समस्याएं आ रही हैं, मैंने कोई जवाब परिणाम प्रबंधित करने का सही तरीका खोजने का प्रयास नहीं किया है, हालांकि मुझे "DoNotExist" या "ऑब्जेक्ट में विशेषता नहीं है DoestNotExists" पर कोई समस्या नहीं है।Django DoNotExist

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') 
+0

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

उत्तर

50

मैं इस तरह से

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

try: 
    # try something 
except ObjectDoesNotExist: 
    # do something 

इस के बाद पर ObjectDoesNotExist का उपयोग कर इस मुद्दे का हल मिल गया है, मेरे कोड काम करता है मैं जरूरत के रूप में

धन्यवाद किसी भी तरह से, अपनी पोस्ट मुझे हल करने के लिए मदद मेरी मुद्दा

+10

के लिए बहुत कुछ धन्यवाद, लेकिन यह वास्तव में सबसे अच्छा तरीका नहीं है। आपको यह समझना चाहिए कि किस वर्ग का ऑब्जेक्ट 'vehicledevice.device.devicetrack_set' द्वारा दर्शाया गया है, और फिर '.doesNotExist' पकड़ें। – mipadi

+0

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

+1

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

85

इस लाइन

except Vehicle.vehicledevice.device.DoesNotExist 

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

०१२३५१६४१०६ की तरह कुछ चाहता हूँ
except Device.DoesNotExist 
+0

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

+0

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

+1

आपकी मदद के लिए धन्यवाद ऑब्जेक्ट डोज़्नोटएक्सिस्ट का उपयोग करके अपवाद प्रबंधन पर मेरा जवाब मिला है धन्यवाद आपके समय – Carlos