Как использовать функцию get_queryset() в миксине - DRF

У меня есть два набора представлений в разных файлах views.py, один из которых связан с моделью A, а другой - с моделью B

class AViewSet(ModelViewSet,CustomMixin):
   a_qs = self.filter_queryset(self.get_queryset())
   lst  = []
   
   def get_lst:
       for a in a_qs:
          lst.append(a)
       return lst
       
class BViewSet(ModelViewSet,CustomMixin):
   b_qs = self.filter_queryset(self.get_queryset())
   
   lst  = []
   
   def get_lst:
       for b in b_qs:
          lst.append(b)
       return lst    

  
class CustomMixin:

 @action(detail=False, methods=['get'])
    def do_smth(self):    
       result_list = self.get_list()

Пока часть self.filter_queryset(self.get_queryset()) является общей для обоих наборов представлений, могу ли я поместить ее в миксин? Как это будет работать?

CustomMixin может быть излишним усложнением в этом случае - вы можете просто сделать CustomViewSet как общий набор представлений для обоих

class AViewSet(CustomViewSet):
    pass
   
class BViewSet(CustomViewSet):
    pass



class CustomViewSet(ModelViewSet):
   qs = self.filter_queryset(self.get_queryset())
   lst  = []

   def get_lst:
       for a in qs:
          lst.append(a)
       return lst

    @action(detail=False, methods=['get'])
    def do_smth(self):    
       result_list = self.get_list()

UPD после обновления вопроса - намерение добавить целое число к объекту немного странно, однако, как общий подход это можно сделать, используя пользовательский метод для каждого класса. Т.е. весь общий код будет в CustomViewSet - различия будут реализованы классами, наследующими от него

class AViewSet(CustomViewSet):
    def _proccess_value(v):
        return v * 2
   
class BViewSet(CustomViewSet):
    def _proccess_value(v):
        return v + 2



class CustomViewSet(ModelViewSet):
   qs = self.filter_queryset(self.get_queryset())
   lst  = []

   def _process_value(v):
       raise NotImplemented()

   def get_lst:
       for a in qs:
          lst.append(self._proccess_value(a))
       return lst

    @action(detail=False, methods=['get'])
    def do_smth(self):    
       result_list = self.get_list()
Вернуться на верх