@bQ1

Как вывести пост, если пользователь отправивший запрос его владелец и 403 в противном случае django rest framework?

Как вывести пост, если пользователь отправивший запрос его владелец и 403 в противном случае django rest framework?
Написал такой код, но он выводит ошибку в сериализаторе AttributeError: 'Response' object has no attribute 'user'
class PostDetailView(RetrieveAPIView):
    serializer_class = serializers.PostSerializer
    lookup_field = 'id'

    def get_object(self):
        django_user = self.request.user
        post_id = self.kwargs['id']
        obj = models.Post.objects.get(id=post_id)
        if not obj.user == django_user.user:
            return Response(status=HTTP_403_FORBIDDEN)
        return Response(data=obj, status=HTTP_200_OK)
  • Вопрос задан
  • 677 просмотров
Решения вопроса 1
Assargin
@Assargin
Перед ответом смотрю наличие ✔ в ваших вопросах
После просмотра вашего кода смутило, что вы из django_user пытаетесь ещё обратиться к user. Так что чисто навскидку может помочь:
if not obj.user == django_user:
    return Response(status=HTTP_403_FORBIDDEN)

Но вообще в DRF есть permissions, и вот как раз второй пример из документации о владельце запрашиваемого объекта

UPD: ой ёй, только щас увидел, какое у вас странное условие, вот так как-то правильнее будет
if obj.user != django_user:
        return Response(status=HTTP_403_FORBIDDEN)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы