Estoy tratando de mejorar un código existente que originalmente tomó 3 minutos para preparar una gran tabla de datos (luego devuelta por Ajax). El código anterior iteraba en un gran querySet, recopilando información de una variedad de objetos relacionados. Según lo que he leído, y al monitorear el registro de SQL, iterar sobre los conjuntos de consulta generalmente es una mala idea, porque SQL se ejecuta para cada elemento. En su lugar, he estado usando valores para recopilar información en una sola instrucción SQL, y luego recorrerla. Usando esta técnica, reduje el tiempo de ejecución a menos de 15 segundos (y aún no he terminado). Sin embargo, como ya no utilizo objetos modelo, no puedo usar get_FOO_display(). ¿Hay alguna manera de usar esta funcionalidad mientras usas valores()?Django: utilizando values () y get_FOO_display()?
simplificado, el original era:
for user in users:
data.append(user.get_name_display()) # Appends 'Joe Smith'
return data
y el nuevo código es:
for user in users.values('name'):
data.append(user['name']) # Appends 'JSmith001', which is incorrect
return data
Además, si hay alguna otra manera de preservar la creación del modelo de objetos sin embargo, sólo se requiere una única SQL declaración en el backend, me encantaría saber al respecto. ¡Gracias!
necesita ver más código. Esto es demasiado general para responder. –
Disculpa, agregué los comentarios anteriores, pero no sé qué más quieres ver. – Nathan