장고는 존재하지 않습니다


85

"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')

답변:


138

이 라인

 except Vehicle.vehicledevice.device.DoesNotExist

DoesNotExist 예외에 대한 장치 인스턴스 를 찾는 것을 의미 하지만 클래스 수준에 있기 때문에 아무것도 없습니다.

 except Device.DoesNotExist

나는 그것을 시도했지만 파이어 폭스의 디버그는 나에게 제공합니다 : DoesNotExist at / tracking / request / statuses VehicleDevice matching query does not exist. 조회 매개 변수는 { 'is_joined__exact': True}
Carlos

이는 예상 된 것이며 실제로 존재하지 않는 개체를 요청한다는 의미 일뿐입니다. 데이터 또는 그이면의 논리를 살펴보아야합니다
Dmitry Shevchenko

1
도와 주셔서 감사합니다. ObjectDoesNotExist를 사용하여 예외 관리에 대한 제 답변을 찾았습니다. 시간 내 주셔서 감사합니다
Carlos

나는이 답변을 찬성하려고했지만 우연히 반대표를 던졌습니다. 너무 늦게 발견하여 투표를 아래에서 위로 변경할 수 없습니다. 미안합니다 ...
LMB

121

이런 식으로 ObjectDoesNotExist를 사용 하여이 문제에 대한 해결책을 찾았습니다.

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

try:
  # try something
except ObjectDoesNotExist:
  # do something

그 후에 내 코드가 필요에 따라 작동합니다.

어쨌든 감사합니다. 귀하의 게시물은 내 문제를 해결하는 데 도움이됩니다.


24
작동하지만 실제로 최선의 방법은 아닙니다. 으로 표현되는 객체의 클래스를 vehicledevice.device.devicetrack_set파악한 다음 <That class>.DoesNotExist.
mipadi 2013

나는 해결책을 찾을 수 없습니다 원인, 그것을 찾기 위해 또한 내가 추측려고 노력했다, 나는이 방법을 찾은 일부 문서를 읽고 나면 당신은 편집에 코드를하시기 바랍니다 시도 할 수
카를로스

1
을 나타내는 클래스를 살펴보고 속성 vehicledevice.device과 관련된 모델이 무엇인지 확인하십시오 devicetrack.
mipadi 2013

(나 모델 정의하지 않고 그것을 결정하는 것은 불가능합니다.)
mipadi

1
난 당신이 실수를 잡는하지 않는 것이 그것의 중요한 그렇게 믿고있어 DoesNotExist다른 뭔가를 ... 전체 선 물건 "명시 적으로 더 나은 암시 적보다"
윌 고든

9

내가 가장 좋고 최적화 된 솔루션은 다음과 같습니다.

시험:
   # 내 코드
"ModelName"을 제외하고 .DoesNotExist :
   # 내 코드

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.