kentuck1213
@kentuck1213

Почему Django Rest Framework требует поле которое я ему уже отправил?

models.py
class Comment(BaseModel, DeleteMixin):
    article = models.ForeignKey(Article, on_delete=models.PROTECT)
    comment = models.TextField()
    active = models.BooleanField(default=False)
    author = models.ForeignKey('core.User', on_delete=models.PROTECT, related_name="comments")

serializers.py:
class UserShortSerializer(serializers.ModelSerializer):
    class Meta:
        model = User
        fields = ("id", "first_name", "last_name", "avatar")


class CommentSerializer(serializers.ModelSerializer):
    author = UserShortSerializer()

    class Meta:
        model = Comment
        fields = ('id', 'article', 'child', 'comment', 'author', 'to_user')

views.py:
class ArticleList(ReadOnlyModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleListSerializer
    filter_class = ArticleFilters
    authentication_classes = (SessionAuthentication, BasicAuthentication)
    permission_classes = (IsAuthenticated,)

    @detail_route(methods=['post'])
    def comment(self, request, pk):
        data = request.data.copy()
        data['author'] = request.user.id
        data['article'] = pk
        serializer = CommentSerializer(data=data)
        serializer.is_valid(raise_exception=True)
        serializer.save()
        return Response(serializer.data)

Отправляю данные, приходит ответ:
{"author":["This field is required."]}
переписываю serializer:
class CommentSerializer(serializers.ModelSerializer):
    class Meta:
        model = Comment
        fields = ('id', 'article', 'child', 'comment', 'author', 'to_user')

Все окей статус 201, ответ:
{"id":37,"article":2,,"comment":"asdsad","author":1,}

Не могу найти где ошибка.
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы