контекстные переменные в представлении DRF generi c - PullRequest
0 голосов
/ 22 февраля 2020

Я пытаюсь создать какой-нибудь интерфейс в DRF - реагировать. someAPI должен выполнить запрос к базе данных, используя текущий зарегистрированный идентификатор пользователя в качестве параметра. После нескольких часов попыток здесь и там работает следующий код, но я не уверен, что это правильный способ, так как он включает в себя использование миксинов и переопределение функций.

Вопрос в том, как добиться того же результата, используя generi * 1005. * DRF просмотров?

class someAPI(mixins.ListModelMixin,
              generics.GenericAPIView):

serializer_class = someSerializer

def get(self, request, *args, **kwargs):
    customRole = get_object_or_404(Role, user=request.user)
    self.queryset = ClassDependingOnRole.objects.filter(role=customRole.id)
    return self.list(request, *args, **kwargs) 

def post(self, request, *args, **kwargs):
    return self.create(request, *args, **kwargs)

1 Ответ

0 голосов
/ 22 февраля 2020

Вы можете использовать ListCreateAPIView напрямую. Это более полезно.

class SomeApi(generics.ListCreateAPIView):
    serializer_class = SomeSerializer    

    def get_queryset(self):
        role=get_object_404(Role, user=self.request.user)
        return ClassDependingOnRole.objects.filter(role=role)

Он автоматически генерирует методы post и get и проверяет валидацию сериализатора. Вы можете найти более подробную информацию из здесь о ListCreateAPIView .

...