Tengo problemas para tratar de calcular los "Errores no existen", he intentado encontrar la forma correcta de administrar los resultados sin respuesta, sin embargo, sigo teniendo problemas con "No existe" o "El objeto no tiene el atributo No existe"
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
fuente
fuente
Respuestas:
Esta línea
except Vehicle.vehicledevice.device.DoesNotExist
significa buscar una instancia de dispositivo para la excepción DoesNotExist, pero no hay ninguna, porque está en el nivel de clase, quieres algo como
except Device.DoesNotExist
fuente
He encontrado la solución a este problema usando ObjectDoesNotExist de esta manera
from django.core.exceptions import ObjectDoesNotExist ...... try: # try something except ObjectDoesNotExist: # do something
Después de esto, mi código funciona como necesito.
Gracias de todos modos, tu publicación me ayuda a resolver mi problema.
fuente
vehicledevice.device.devicetrack_set
y luego capturar<That class>.DoesNotExist
.vehicledevice.device
y averigüe cuál es el modelo relacionado para eldevicetrack
atributo.DoesNotExist
por otra cosa ... todo el asunto zen de "lo explícito es mejor que lo implícito"La solución que creo que es mejor y optimizada es:
fuente