У меня возникают проблемы с попыткой вычислить «DoesNotExist Errors», я попытался найти правильный способ управления результатами отсутствия ответа, однако у меня по-прежнему возникают проблемы с «DoesNotExist» или «Object has 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')
Ответы:
Эта линия
except Vehicle.vehicledevice.device.DoesNotExist
означает поиск экземпляра устройства для исключения DoesNotExist, но его нет, потому что он находится на уровне класса, вам нужно что-то вроде
except Device.DoesNotExist
источник
Я нашел решение этой проблемы, используя ObjectDoesNotExist таким образом
from django.core.exceptions import ObjectDoesNotExist ...... try: # try something except ObjectDoesNotExist: # do something
После этого мой код работает так, как мне нужно
В любом случае, спасибо, ваш пост помог мне решить мою проблему
источник
vehicledevice.device.devicetrack_set
, а затем уловить<That class>.DoesNotExist
.vehicledevice.device
, и выясните, какая модель связана сdevicetrack
атрибутом.DoesNotExist
за что-то еще ... все «явное лучше, чем неявное» дзенРешение, которое я считаю лучшим и оптимизированным:
источник
Хороший способ справиться с ошибкой "не найден" в Django.
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)
источник