Bạn cần một chỉnh sửa nhỏ trong bộ tuần tự của mình:
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']
Dưới đây là một ví dụ, sử dụng các tập xem trộn Mô hình. Trong create
phương pháp này, bạn có thể tìm thấy cách thích hợp để gọi bộ nối tiếp. get_serializerPhương thức điền đúng từ điển ngữ cảnh. Nếu bạn cần sử dụng một bộ tuần tự khác được xác định trên bộ khung nhìn, hãy xem update
phương pháp về cách khởi tạo bộ tuần tự bằng từ điển ngữ cảnh, phương pháp này cũng chuyển đối tượng yêu cầu đến bộ tuần tự.
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
là hoàn toàn ❤️ django-rest-framework.org/api-guide/validators/…