
Bernardo Augusto García Loaiza
PreguntaMe gustaría conocer cual es la diferencia entre utilizar APIView y utilizar ModelViewSet cuando quiero obtener una lista de mis objetos de modelos serializados
Por ejemplo, en la documentación de APIView se dice que con la clase
ListUser
get
<code> class ListUsers(APIView): """ View to list all users in the system. * Requires token authentication. * Only admin users are able to access this view. """ authentication_classes = (authentication.TokenAuthentication,) permission_classes = (permissions.IsAdminUser,) def get(self, request, format=None): """ Return a list of all users. """ usernames = [user.username for user in User.objects.all()] return Response(usernames)
Yo he estado haciendo esto mismo, obteniendo una lista de mi modelo
User
ModelViewSet
<code> class UserViewSet(viewsets.ModelViewSet): """ API endpoint that allows users to be viewed or edited. """ queryset = User.objects.all().order_by('-date_joined') serializer_class = UserSerializer filter_fields = ('username', 'is_player', 'first_name', 'last_name', 'team' , 'email', )
¿Cómo puedo yo identificar cuando utilizar APIView y cuando debo utilizar ModelViewSet cuando quiero interactuar con mis modelos?

Fourier Tech s.a.s
El ModelViewSet requiere que el objeto que devuelva la petición debe ser del modelo que se declara en el Serializer, mientras que APIView puedes devolver cualquier estructura de datos,no definir queryset ni serializer, lo que pasa es que en la documentación hacen el ejemplo puntualmente con un modelo(User), pero según entiendo habrán operaciones en las que el ModelViewSet no te permita devolver la estructura que necesitas o no sea necesario definir como tal un modelo al que apuntarle,