Расширение нескольких наборов CustomViewsets - как readonly с Django

В нашем проекте ведущий разработчик поставил задачу рефакторинга некоторых наборов представлений в нашем проекте.

Создайте представление Активы, доступное только для чтения, которое будет возвращать все активы по умолчанию и romy

.

Итак, исходный код выглядит следующим образом

 class DefaultAssetViewSet(viewsets.ModelViewSet):
     queryset = DefaultAsset.objects.all()
     serializer_class = DefaultAssetSerializer
     permission_classes = [IsAdminUser]
     filter_backends = [DjangoFilterBackend, OrderingFilter, SearchFilter]
     filterset_fields = ['name']
     search_fields = ['name', 'default_value']

     @action(detail=False, methods=['get'])
     def defaults(self, request):
    

       defaults = {}
       for d in self.queryset.all():
          defaults[d.name] = d.default_value
       return Response({'defaults': defaults})

def destroy(self, request, *args, **kwargs):
    try:
        return super().destroy(request, *args, **kwargs)
    except models.ProtectedError:
        return Response(
            {'detail': ErrorDetail('Unable to perform this action.')},
            status=status.HTTP_403_FORBIDDEN)



class RomyAssetViewSet(viewsets.ModelViewSet):
   queryset = RomyAsset.objects.all()
   serializer_class = RomyAssetSerializer
   permission_classes = [IsAdminUser]
   filter_backends = [DjangoFilterBackend, OrderingFilter, SearchFilter]
   filterset_fields = [
      'romy', 'default_asset'
   ]
   search_fields = [
      'romy', 'default_asset'
   ]

Итак, первая идея, которая пришла мне в голову, - это расширить эти два представления до класса AssetViewSet

  class AssetViewSet(RomyAssetViewSet, DefaultAssetViewSet,viewsets.ReadOnlyModelViewSet):

      """ some code here"""

 


 

Возможно ли расширение пользовательских наборов представлений, как эти? А также как реализовать get или list для RomyAssetViewet и DefaultAssetViewset внутри AssetViewsetClass?

Вернуться на верх