2013-04-24 59 views
39

我在嘗試計算「DoesNotExist錯誤」時遇到了問題,我試圖找到正確的方式來管理無回答結果,但是我繼續在「DoesNotExist」或「Object hast not Attribute DoestNotExists」Django DoesNotExist

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 2017-10-27 09:24:49

回答

50

我發現使用ObjectDoesNotExist在這條路上

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

try: 
    # try something 
except ObjectDoesNotExist: 
    # do something 

在此之後,解決這個問題,我的代碼工作,因爲我需要

感謝任何方式,您的文章幫我解決問題

+10

這將工作,但它不是最好的方法。你應該確定'vehicledevice.device.devicetrack_set'代表什麼類的對象,然後捕獲' .DoesNotExist'。 – mipadi 2013-04-29 23:00:15

+0

我試圖找到,也是我試圖猜測,導致我找不到解決方案,在閱讀了一些文檔後,我發現這種方式 你可以嘗試編輯代碼請 – Carlos 2013-04-29 23:11:07

+1

看看代表'vehicledevice .device',並找出'devicetrack'屬性的相關模型是什麼。 – mipadi 2013-04-29 23:12:09

85

此行

except Vehicle.vehicledevice.device.DoesNotExist 

意味着尋找設備例如爲DoesNotExist例外,但有沒有,因爲它是在一流水平,你想要的東西像

except Device.DoesNotExist 
+0

我試圖做到這一點,但Firefox上的調試給了我: DoesNotExist at/trackin g /請求/狀態 VehicleDevice匹配查詢不存在。查找參數爲{'is_joined__exact':True} – Carlos 2013-04-24 00:29:00

+0

這是預期的,僅表示您請求的對象不存在。你應該看看你的數據或其背後的邏輯 – 2013-04-24 00:49:18

+1

感謝您的幫助我找到了我的答案,使用ObjectDoesNotExist的異常管理 非常感謝您的時間 – Carlos 2013-04-29 21:33:41

相關問題