Tengo una aplicación de blog simple con el modelo "Publicar". Si elimino todas las entradas en el modelo Post Me aparece un error cuando intento hacer referencia al primer elemento de la lista de entradas por fecha, lo cual hice así:django cómo obtener el 0º artículo de una lista posiblemente vacía
latest_post = Post.objects.order_by('-date_created')[0]
El error es: IndexError: índice de la lista fuera de rango
como una solución, ahora consigo el artículo como éste:
all_posts = Post.objects.order_by('-date_created')
latest_post =()
if (all_posts):
latest_post = all_posts[0]
esto funciona si no hay artículos en mi modelo "post", y no hay excepción. Sin embargo, para mí esto parece demasiado código para hacer algo bastante simple. Supongo que hay una forma mejor de hacerlo utilizando la API django QuerySet, pero no puedo encontrar nada en la documentación.
¿Alguna idea?
EDIT: Extrañamente, esto arroja ningún error cuando no hay elementos en el modelo Post:
latest_post_list = Post.objects.all().order_by('-date_created')[1:10]
+1 para 'intentar ... excepto'. Es más fácil pedir perdón que permiso. –
+1 por sugerir lo último como una forma aún mejor de resolver el problema. –
Tenga en cuenta que '.latest()' no filtra ninguna entrada nula, y los nulos primero se ordenan normalmente :). Entonces, si las fechas pueden ser nulas, necesita 'Post.objects.exclude (date_created = None) .latest ('date_created')' – rcoup