Fullstack con Python
> Backend con Python
> Sesión 05
> Proyecto
- Agregar la relación entre los modelos Tour y Salida.
- Realizar operaciones de CRUD vía API para la tabla Salida incluyendo los tours asociados.
-
Actualizar repositorio
-
Usar la carpeta de trabajo
Sesion-05/Proyecto
-
Activar el entorno virtual Bedutravels
-
Diagrama de entidad-relación del proyecto Bedutravels
-
Se modifica el archivo
serializers.py
para que se muestre la lista de salidas:class SalidaSerializer(serializers.HyperlinkedModelSerializer): """ Serializador para atender las conversiones para Salida """ class Meta: # Se define sobre que modelo actúa model = Salida # Se definen los campos a incluir fields = ('id', 'fechaInicio', 'fechaFin', 'asientos', 'precio', 'tour')
Se agrega la url
/api/salidas/
:router.register(r'salidas', views.SalidaViewSet)
Se agrega la vista:
class SalidaViewSet(viewsets.ModelViewSet): """ API que permite realizar operaciones con la tabla Salida """ # Se define el conjunto de datos sobre el que va a operar la vista, # en este caso, sobre todos las salidas disponibles. queryset = Salida.objects.all().order_by('id') # Se define el serializador encargado de transformar las peticiones # de json a objetos django y viceversa. serializer_class = SalidaSerializer
El resultado debe ser como el siguiente:
-
Se actualiza el serializador
TourSerializer
en el archivoBedutravels/tours/serializers.py
para agregar el camposalidas
para que muestre la lista de salidas por cada tour:# Se definen los campos a incluir fields = ('id', 'slug', 'nombre', 'operador', 'tipoDeTour', 'descripcion', 'img', 'pais', 'zonaSalida', 'zonaLlegada', 'salidas')
-
Acceso y uso de la API
/api/tours
Para tener acceso al API abrir la siguiente url:
http://localhost:8000/api/tours/
Se deberá de observar algo similar a lo siguiente:
Para tener acceso al detalle del tour con id=1 abrir la siguiente url:
http://localhost:8000/api/tour/1/
Se deberá de observar algo similar a lo siguiente: