DRF CreateModelMixin с дополнительными полями

Я использую GenericAPIView с CreateModelMixin для создания экземпляра модели. Мне нужно, чтобы мой сериализатор добавлял дополнительные поля, которые не определены пользователем. Мой метод Serializer.create уже настроен для этого, но я не знаю, как передать поля в метод CreateModelMixin.create. Вот минимальная версия того, что у меня есть:

class Foo(mixins.CreateModelMixin, generics.GenericAPIView):
    permission_classes = [IsAuthenticated]

    def get_serializer_class(self):
        return FooSerializer

    def post(self, request):
        return self.create(
            request, requester=request.user  # Additional field
        )

Это не работает - поле requester не передается в FooSerializer.save, поэтому FooSerializer выдает ошибку при попытке доступа к requester в FooSerializer.create. Раньше я использовал APIView и вызывал сериализатор напрямую, поэтому я мог просто:

serializer = FooSerializer(data=request.data)
if serializer.is_valid():
    foo = serializer.save(requester=request.user)

Есть ли способ достичь этого с помощью GenericAPIView? Я хочу принять DRF's DRY-ness и избежать вызова сериализаторов в каждом методе конечной точки.

Вместо переопределения метода create вы можете переопределить perform_create. Также вам может понадобиться определить метод post:

class Foo(mixins.CreateModelMixin, generics.GenericAPIView):
    permission_classes = [IsAuthenticated]

    def get_serializer_class(self):
        return FooSerializer

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

    def perform_create(self, serializer):
        serializer.save(requester=self.request.user)
Вернуться на верх