Django DoesNotExist

Car*_*los 71 python django django-models django-views

我在试图找出"DoesNotExist错误"时遇到问题,我试图找到管理无应答结果的正确方法,但是我继续遇到"DoesNotExist"或"对象没有属性DoestNotExists"的问题

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')
Run Code Online (Sandbox Code Playgroud)

Dmi*_*nko 119

这条线

 except Vehicle.vehicledevice.device.DoesNotExist
Run Code Online (Sandbox Code Playgroud)

意味着为DoesNotExist异常寻找设备实例,但没有,因为它在类级别,你想要类似的东西

 except Device.DoesNotExist
Run Code Online (Sandbox Code Playgroud)


Car*_*los 93

我已经通过这种方式使用ObjectDoesNotExist找到了解决这个问题的方法

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

try:
  # try something
except ObjectDoesNotExist:
  # do something
Run Code Online (Sandbox Code Playgroud)

在此之后,我的代码按照我的需要工作

谢谢你的帖子,你的帖子帮我解决了我的问题

  • 那会奏效,但这不是最好的方式.您应该确定`vehicledevice.device.devicetrack_set`表示的对象类,然后捕获`<That class> .DoesNotExist`. (20认同)

小智 15

我认为最好和优化的解决方案是:

尝试:
   #你的代码
除了“ModelName”。DoesNotExist:
   #你的代码


Has*_*han 9

第一种方式:

\n
try:\n   # Your code goes here\nexcept Model.DoesNotExist:\n   # Handle error here\n
Run Code Online (Sandbox Code Playgroud)\n

另一种处理方式在 Django 中没有找到。它引发 Http404 而不是 model\xe2\x80\x99sDoesNotExist 异常。

\n

https://docs.djangoproject.com/en/3.1/topics/http/shortcuts/#get-object-or-404

\n
from django.shortcuts import get_object_or_404\n\ndef get_data(request):\n    obj = get_object_or_404(Model, pk=1)\n
Run Code Online (Sandbox Code Playgroud)\n

  • Model.DoesNotExist 不适合我。下一个答案就好了。 (2认同)