Crear Modelos y Relacionarlos
- Crea los siguientes modelos en una aplicación llamada biblioteca:
- Autor: Almacena el nombre y la fecha de nacimiento.
- Libro: Contiene título, fecha de publicación y una relación Muchos a Muchos con Autor.
- Género: Define un género literario con un campo de nombre único. Relaciona Libro con Género mediante una relación Uno a Muchos (ForeignKey).
- Realiza las migraciones necesarias para reflejar estos modelos en la base de datos.
- Registra los modelos en el admin de Django, y realice algunas inserciones para probar consistencia.
Soluciones:
Vista Dinámica con Parámetros en la URL
Instrucciones:
- Agrega una ruta en
urls.py
llamadadetalles/<str:proyecto>/
para mostrar detalles básicos sobre un proyecto del grupo. - Define una vista en
views.py
que reciba el parámetro dinámicoproyecto
y devuelva un mensaje como "Detalles del proyecto: [proyecto]". - Asegúrate de que el nombre del proyecto aparezca con todas las palabras capitalizadas.
- Verifica que la vista funcione correctamente accediendo a URLs como
/detalles/proyecto-inicial/
y/detalles/nuevo-desafío/
.
Soluciones:
Construir una Vista para Listar Productos en JSON
- Crea una vista LibroListView que:
- Use la clase base View.
- Maneje solicitudes HTTP GET.
- Recupere datos del modelo Libro, incluyendo; título, género, autores asociados.
- Devuelva los datos en formato JSON.
- Configura la URL para la vista.
- EXTRA: Personaliza la respuesta JSON para que incluya un mensaje como "total":
<número de productos>
.
Pistas: - Usa un queryset para obtener todos los libros. - Itera sobre los libros y utiliza sus relaciones para construir el JSON. - Utiliza JsonResponse para retornar la respuesta.
Soluciones:
Filtrar Libros por Género y Mostrar Autores
- Crea una vista LibroFiltrarView que:
- Use la clase base View.
- Maneje solicitudes HTTP GET.
- Recibe un parámetro genero desde la URL (query string).
- Filtra los libros que pertenecen al género especificado.
- Devuelve los datos en formato JSON, incluyendo; título, género, y autores asociados.
- Configura la URL para la vista.
Pistas:
- Usa request.GET.get('genero')
para obtener el valor del parámetro género.
- Filtra los libros por género.
- Itera sobre los libros para construir la respuesta JSON.
- Si no se proporciona el parámetro genero, devuelve un error JSON con un código de estado 400.
Soluciones: