Django Rest Framework Usando APIView y ModelViewSet

Pregunta de la clase:
Bernardo Augusto García Loaiza

Bernardo Augusto García Loaiza

Pregunta
studenthace 8 años

Me 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
y su método
get
obtienen la lista de usuarios:

<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
utilizando un
ModelViewSet
de esta forma:

<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?

1 respuestas
para escribir tu comentario
    Fourier Tech s.a.s

    Fourier Tech s.a.s

    studenthace 6 años

    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,

Curso de Python y Django 2016

Curso de Python y Django 2016

Aprende Python desde cero y crea tu primera aplicación web completa en Django. Entiende las bases del lenguaje, sus funciones, conoce cómo conectarte a bases de datos y termina creando una API REST de manera profesional para tu app.

Curso de Python y Django 2016
Curso de Python y Django 2016

Curso de Python y Django 2016

Aprende Python desde cero y crea tu primera aplicación web completa en Django. Entiende las bases del lenguaje, sus funciones, conoce cómo conectarte a bases de datos y termina creando una API REST de manera profesional para tu app.