Mam problemy z obliczeniem błędów „DoesNotExist”, próbowałem znaleźć właściwy sposób zarządzania wynikami braku odpowiedzi, jednak nadal mam problemy z „DoesNotExist” lub „Object hast not Attribute 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')
python
django
django-models
django-views
Carlos
źródło
źródło
Odpowiedzi:
Ta linia
except Vehicle.vehicledevice.device.DoesNotExist
oznacza szukanie instancji urządzenia dla wyjątku DoesNotExist, ale nie ma go, ponieważ jest na poziomie klasy, potrzebujesz czegoś takiego
except Device.DoesNotExist
źródło
Znalazłem rozwiązanie tego problemu za pomocą ObjectDoesNotExist w ten sposób
from django.core.exceptions import ObjectDoesNotExist ...... try: # try something except ObjectDoesNotExist: # do something
Po tym mój kod działa tak, jak potrzebuję
W każdym razie dzięki, Twój post pomoże mi rozwiązać mój problem
źródło
vehicledevice.device.devicetrack_set
, a następnie złapać<That class>.DoesNotExist
.vehicledevice.device
, i dowiedz się, jaki jest powiązany modeldevicetrack
atrybutu.DoesNotExist
czegoś innego ... całe „wyraźne jest lepsze niż niejawne” rzeczy zenRozwiązanie, które uważam za najlepsze i zoptymalizowane to:
źródło
Dobry sposób na obsługę nie znalezionego błędu.
https://docs.djangoproject.com/en/3.1/topics/http/shortcuts/#get-object-or-404
from django.shortcuts import get_object_or_404 def get_data(request): obj = get_object_or_404(Model, pk=1)
źródło