Serializadores Anidados en Django: Implementación y Uso Práctico
Clase 17 de 21 • Curso de Django Rest Framework
Resumen
Los serializadores anidados permiten incluir datos de otros modelos directamente en un serializador, lo que resulta útil al necesitar información relacionada en un solo response. En esta clase, aplicamos esta técnica para incluir una lista de citas médicas dentro del recurso de pacientes en la aplicación DoctorApp. Esto mejora la eficiencia en el manejo de relaciones entre modelos, y facilita cambios futuros en la estructura de los response de la API.
¿Cómo implementar un serializador anidado en Django?
- Crea un nuevo campo dentro del serializador principal.
- Importa el serializador del modelo que deseas anidar.
- Define el campo con el serializador importado y marca como
Read Only
si es necesario. - Asegúrate de incluir el nuevo campo en la lista de
fields
del serializador para que se refleje en el response.
¿Cómo anidar citas dentro del serializador de pacientes?
Para incluir las citas médicas de un paciente, sigue estos pasos:
- Abre el serializador de pacientes.
- Agrega un nuevo campo llamado
appointments
que usará elAppointmentsSerializer
. - Importa el serializador de citas médicas desde su respectivo módulo (
Bookings.Serializers
). - Configura el campo con
many=True
yread_only=True
, ya que es una lista de citas que solo puede ser visualizada. - Verifica que el campo se ha agregado correctamente al incluirlo en la lista de campos del serializador.
¿Cómo validar la implementación?
- Ejecuta el servidor de desarrollo con
manage.py runserver
. - Accede al recurso
Patients
en la API y revisa si aparece el campoappointments
. - En caso de que falte algún campo, como el
ID
, asegúrate de incluirlo en el serializador.
¿Cómo crear y visualizar citas en la consola?
Para crear una cita desde la consola de comandos:
- Abre la consola con
manage.py shell
. - Importa los modelos relevantes (Paciente, Doctor, Appointment).
- Define variables para el paciente y el doctor.
- Crea una nueva cita usando el manager de appointments.
- Recarga la página para verificar que el array de citas ya contiene información en formato JSON.
¿Cómo usar serializadores anidados para otros modelos?
El uso de serializadores anidados no se limita a las citas de los pacientes. Puedes replicar este mismo enfoque para otros recursos. Por ejemplo, podrías crear un serializador para listar las citas asociadas a un doctor, proporcionando una mayor flexibilidad a la API y haciendo que las relaciones entre modelos sean más visibles y accesibles.