@Lepilov

Как правильно наследовать через super() в DRF?

Django Rest Framework. Не могу разобраться с кодом python2.7, который адаптирую с другого своего проекта на python3. Загвоздка в вызове super() в функции def get. Во 2-м питоне надо передавать класс в качестве аргумента, но я не догоняю какой именно нужно. Вызов экземпляра работает (127.0.0.1:8000/api/carrier/?id=1), а вот при попытке вызвать весь queryset (127.0.0.1:8000/api/carrier/) получаю
AttributeError at /api/carrier/
'super' object has no attribute 'get'

код:
class CarrierView(
    mixins.CreateModelMixin,
    mixins.RetrieveModelMixin,
    mixins.UpdateModelMixin,
    mixins.DestroyModelMixin,
    generics.ListAPIView):

    permission_classes = []
    authentication_classes = []
    serializer_class = CarrierSerializer
    #lookup_field = 'url'

    def get_queryset(self):
        queryset = Carrier.objects.all()
        return queryset

    def get_object(self):
        request = self.request
        passed_id = request.GET.get('id', None)
        queryset = self.get_queryset()
        obj = None
        if passed_id is not None:
            obj = get_object_or_404(queryset, id=passed_id)
            self.check_object_permissions(request, obj)
        return obj

    def get(self, request, *args, **kwargs):
        passed_id = request.GET.get('id', None)
        if passed_id is not None:
            return self.retrieve(request, *args, **kwargs)
        return super(mixins.RetrieveModelMixin).get(request, *args, **kwargs)


Пробовал передавать в super - objects , generics.ListAPIView, mixins.RetrieveModelMixin, но не помогло. Еще не могу понять, почему не работает вызов списка , если super находится в get которая отдает экземпляр. В 3-м питоне все само собой работало
  • Вопрос задан
  • 313 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы