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 create
mé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 update
mé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)
CurrentUserDefault
es absolutamente ❤️ django-rest-framework.org/api-guide/validators/…