Django Rest как сохранить текущего пользователя при создании нового блога?

Когда я создаю запись в блоге, я также хочу автоматически сохранить текущего пользователя, не выбирая его вручную в качестве автора блога.

вот мой код:

models.py:

class Blog(models.Model):
    author = models.ForeignKey(
        settings.AUTH_USER_MODEL, on_delete=models.CASCADE, blank=True, null=True)
    blog_title = models.CharField(max_length=200, unique=True)

serializers.py

class BlogSerializer(serializers.ModelSerializer):
    class Meta:
        model = Blog

views.py

class BlogViewSet(viewsets.ModelViewSet):
    queryset = Blog.objects.all().order_by('-id')
    serializer_class = BlogSerializer
    pagination_class = BlogPagination
    lookup_field = 'blog_slug'

    def get_permissions(self):
        if self.action == 'retrieve':
            permission_classes = [IsOwnerOrReadOnly]
        elif self.action == 'list':
            permission_classes = [IsOwnerOrReadOnly]

        else:
            permission_classes = [IsOwnerOrReadOnly & IsAuthorGroup]
        return [permission() for permission in permission_classes]

Вы можете модифицировать свой сериализатор следующим образом. Он забирает пользователя из контекста запроса и создает блог.

class BlogSerializer(serializers.ModelSerializer):
    class Meta:
        model = Blog
        fields = "__all__"
        read_only_fields = ["author"]

    def create(self, validated_data):
        user = self.context["request"].user
        blog = Blog.objects.create(**validated_data, author=user)

        return blog
Вернуться на верх