Serileştiricinizde küçük bir düzenlemeye ihtiyacınız var:
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']
İşte Model karıştırma görünüm kümelerinin kullanıldığı bir örnek. Gelen createyöntemle Eğer seri hale çağırarak doğru yolunu bulabilirsiniz. get_serializer yöntemi bağlam sözlüğünü düzgün bir şekilde doldurur. Farklı bir serileştirici kullanmanız gerekiyorsa, daha sonra görünüm kümesinde tanımlanmışsa update, aynı zamanda istek nesnesini serileştiriciye aktaran bağlam sözlüğü ile serileştiricinin nasıl başlatılacağına ilişkin yönteme bakın .
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)
CurrentUserDefaultkesinlikle ❤️ django-rest-framework.org/api-guide/validators/…