Necesita una pequeña edición en su serializador:
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
def save(self):
user = self.context['request'].user
title = self.validated_data['title']
article = self.validated_data['article']
Aquí hay un ejemplo, usando conjuntos de vistas de mezcla de modelos. En el createmétodo, puede encontrar la forma correcta de llamar al serializador. El método get_serializer llena el diccionario de contexto correctamente. Si necesita usar un serializador diferente al definido en el conjunto de vistas, consulte el updatemétodo sobre cómo iniciar el serializador con el diccionario de contexto, que también pasa el objeto de solicitud al serializador.
class SignupViewSet(mixins.UpdateModelMixin, mixins.CreateModelMixin, viewsets.GenericViewSet):
http_method_names = ["put", "post"]
serializer_class = PostSerializer
def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)
self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)
def update(self, request, *args, **kwargs):
partial = kwargs.pop('partial', False)
instance = self.get_object()
kwargs['context'] = self.get_serializer_context()
serializer = PostSerializer(instance, data=request.data, partial=partial, **kwargs)
serializer.is_valid(raise_exception=True)
self.perform_update(serializer)
return Response(serializer.data)
CurrentUserDefaultes absolutamente ❤️ django-rest-framework.org/api-guide/validators/…