Невозможно прочитать данные из вложенного сериализатора в Django REST FrameworkPython

Программы на Python
Ответить
Anonymous
 Невозможно прочитать данные из вложенного сериализатора в Django REST Framework

Сообщение Anonymous »

models.py
class Post(models.Model):
content = models.TextField()
created = models.DateTimeField(auto_now_add=True)
suspended = models.BooleanField(default=False)
user = models.ForeignKey(User, on_delete=models.CASCADE)

class Follow(models.Model):
follower = models.ForeignKey(User, related_name='followings', on_delete=models.CASCADE)
following = models.ForeignKey(User, related_name='followers', on_delete=models.CASCADE)
created = models.DateTimeField(auto_now_add=True)

class Meta:
unique_together = ('follower', 'following')

serializer.py
class PostSerializer(serializers.ModelSerializer):
user = UserSerializer(read_only=True)

class UserSerializer(serializers.ModelSerializer):
is_following = serializers.BooleanField(read_only=True)

views.py
class PostViewSet(ModelViewSet):
serializer_class = PostSerializer
permission_classes = [IsAuthenticatedOrReadOnly, IsOwnerOrReadOnly]

def get_queryset(self):
queryset = Post.objects.filter(
suspended=False
).select_related(
'user'
)
if self.request.user.is_authenticated:
queryset = queryset.annotate(
user__is_following=Exists(
Follow.objects.filter(
follower=self.request.user,
following=OuterRef("user_id")
)
)
)
else:
queryset = queryset.annotate(
user__is_following=Value(False)
)
return queryset

Я не могу проверить is_following внутри объекта пользователя.
В моем списке сообщений я использую вложенный сериализатор для получения информации о пользователе для каждого сообщения, но мне не удается проверить is_following. Я хочу понять, где я ошибся, поскольку я новичок в DRF.
Изменить
{
"next": "http://localhost:8000/v1/posts/?cursor= ... IwMCUzQTAw",
"previous": null,
"results": [
{
"content": "deneme 22",
"created": "2026-03-06T21:08:12.630305Z",
"id": 22,
"suspended": false,
"user": {
"date_joined": "2026-03-06T21:05:15.279892Z",
"email": "erkan.unluturk@outlook.com",
"first_name": "",
"id": 1,
"is_active": true,
>>>> "is_following", >>>> This field is not showing!!
"last_name": "",
"username": "erkan.unluturk"
}
}
]
}


Подробнее здесь: https://stackoverflow.com/questions/799 ... -framework
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»