def list_and_crud(model, serializer, queryset=None):
"""
Create a ListCreateAPIView and RetrieveUpdateDestroyAPIView corresponsing
to a given model/serializer pair.
It's like writing the following code manually (when called on model
``Foo``)::
class FooList(generics.ListCreateAPIView):
queryset = models.Foo.objects.all()
serializer_class = serializers.FooSerializer
class FooRUD(generics.RetrieveUpdateDestroyAPIView):
queryset = models.Foo.objects.all()
serializer_class = serializers.FooSerializer
"""
queryset = model.objects.all() if queryset is None else queryset
lst = type(model.__name__ + "List", (generics.ListCreateAPIView, ), {})
rud = type(model.__name__ + "CRUD",
(generics.RetrieveUpdateDestroyAPIView, ), {})
lst.queryset = queryset
lst.serializer_class = serializer
# lst.permission_classes = (permissions.IsAuthenticatedOrReadOnly, )
rud.queryset = queryset
rud.serializer_class = serializer
# rud.permission_classes = (permissions.IsAuthenticatedOrReadOnly, )
return (lst, rud)
评论列表
文章目录