¿Cómo puedo recuperar el último registro en un determinado conjunto de preguntas?Obtener el último registro en un conjunto de consulta
Respuesta
Simplemente podría hacer algo como esto, usando reverse()
:
queryset.reverse()[0]
Además, tenga cuidado esta advertencia de la documentación de Django:
...
reverse()
en cuenta que debe en general, sólo se llamará en un QuerySet que tiene un orden definido (por ejemplo, al consultar un modelo que define un pedido predeterminado, o cuando usandoorder_by()
). Si no hay tal ordenar se define para un determinadoQuerySet
, llamandoreverse()
en él no tiene efecto real (el orden no estaba definido antes de llamarreverse()
, y se permanecen indefinidos después).
latest(field_name=None)
devuelve el último objeto en la tabla, por fecha, mediante el nombre_campo proporcionado como el campo de fecha.Este ejemplo devuelve la última entrada en la tabla, de acuerdo con el campo
pub_date
:Entry.objects.latest('pub_date')
Esto también funciona. 'Entry.objects.latest ('id')' – Renyi
Esta es la forma perfecta de hacerlo. Además, "si el Meta de su modelo especifica get_latest_by, puede dejar fuera el argumento field_name a latest()" según los documentos. –
La forma más sencilla, sin tener que preocuparse por el ordenamiento actual, es convertir el QuerySet a una lista para que puedas usar la indexación negativa normal de Python. De este modo:
list(User.objects.all())[-1]
Esto consultará TODOS los objetos de la base de datos y luego tomará el primero – warvariuc
¡Buen punto! Obviamente no pensé en eso. La respuesta .reverse() (actualmente seleccionada) es la forma correcta de hacerlo. –
Si se utiliza Django 1.6 o superior, es mucho más fácil ahora que ha introducido la nueva API -
Model.object.earliest()
Dará última() con dirección inversa.
p.s. - Sé que es una vieja pregunta, publicando como si al avanzar alguien llegara a esta pregunta, conocieran esta nueva característica y no terminaran usando el método anterior.
from docs: first() y latest() requieren un parámetro field_name o 'get_latest_by' en el modelo – panchicore
Django> = 1,6
métodos Agregado de QuerySet primero() y la última() que son métodos de conveniencia que regresan el primero o el último objeto búsqueda de los filtros. Devuelve None si no hay objetos que coincidan.
Cuando el conjunto de consultas ya está agotada, es posible hacer esto para evitar otra pista db -
last = queryset[len(queryset) - 1] if queryset else None
No utilice try...except...
.
Django no arroja IndexError
en este caso.
arroja AssertionError
ProgrammingError
o (cuando se ejecuta pitón con la opción -O)
Para conseguir el primer objetivo:
ModelName.objects.first()
Para conseguir los objetos últimos:
ModelName.objects.last()
puede usar el filtro
ModelName.objects.filter(name='simple').first()
Esto funciona para mí.
- 1. Cómo obtener el último registro
- 2. ¿Cómo obtener el último registro de Sqlite?
- 3. Azure Table Storage obtener el último registro
- 4. Obtener el último registro de cada mes en MySQL ...?
- 5. Consulta SQL para obtener el último precio
- 6. Cómo obtener el último registro por grupo en SQL
- 7. ¿Cómo obtener el primer y último registro de una consulta sql?
- 8. ¿Cómo obtener el último registro indexado en Solr?
- 9. cómo obtener el último número de registro después de insertar el registro en la base de datos en el acceso
- 10. Obtener último registro de una tabla en Postgres
- 11. ¿Cómo recuperar el primer y último registro de un registro agrupado en una consulta MySQL con funciones agregadas?
- 12. ¿Obtener el último elemento en un diccionario?
- 13. Obtener ID del último registro insertado en Oracle db
- 14. Obtenga el último número de cheque (último ID del conjunto de cambios)
- 15. Obtener la identificación del último registro insertado en mybatis
- 16. último conjunto distinto de registros
- 17. Conseguir el último registro de SQL en condición WHERE
- 18. jstl foreach omite un elemento en el último registro
- 19. MySQL recuperar el último registro para el grupo
- 20. ¿Cómo obtener el último registro de cada grupo usando GROUP BY?
- 21. ¿La forma más rápida de obtener el primer objeto de un conjunto de consulta en django?
- 22. ASP.NET MVC Obtener ID del último registro agregado
- 23. Encuentra siguiente registro en un conjunto: LINQ
- 24. Recuperar el último registro de la tabla de SQL Server
- 25. Obtiene el último registro de la colección mongodb
- 26. Obtener el primero o el último viernes en un mes
- 27. Google Maps infoWindow solo cargando el último registro en marcadores
- 28. Anulación del registro de versiones anteriores de un conjunto .net
- 29. consulta SQL para obtener registros
- 30. ¿Cómo seleccionar el último registro de una tabla en SQL?
thnx ... no sabía esto – Stephen
como se dice en django docs,: "tenga en cuenta que reverse() generalmente solo debe invocarse en un QuerySet que tiene un orden definido (por ejemplo, al consultar con un modelo que define un orden predeterminada, o al usar order_by()). Si no se define tal orden para un QuerySet dado, llamar a reverse() no tiene ningún efecto real (el orden no se definió antes de llamar a reverse(), y permanecerá indefinido después) " – jujule
He editado esa advertencia en su respuesta, espero que esté bien. –