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-м питоне все само собой работало