2013-04-24 61 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

相关问题