Анотация в сериализаторе работает неправильно
предположить
[
{"folder": "cs", "post": {"id": "jqux3ipm", "content": "content", "username": "username", "liked": false, "saved": false, "seen": false}, "liked": true, "saved": true, "seen": false},
]
Как преобразовать в
?[
{"folder": "cs", "post": {"id": "jqux3ipm", "content": "content", "username": "username", "liked": true, "saved": true, "seen": false},
]
модели
class Post(models.Model):
content = ...
...
class SavedPost(models.Model):
user = models.ForeignKey(User,...)
post = models.ForeignKey(Post,...)
class LikedPost(models.Model):
user = models.ForeignKey(...)
post = models.ForeignKey(Post,...)
Сериализатор, который я использую
class SavedPostSerializer(serializers.ModelSerializer):
seen = serializers.BooleanField(default=True, read_only=True)
liked = serializers.BooleanField(default=False, read_only=True)
saved = serializers.BooleanField(default=True, read_only=True)
post = PostSerializer(read_only=True)
class Meta:
model = SavedPost
fields = ("folder", "post", "liked", "saved", "seen")
view
@login_required()
def GetSavedPost(request):
obj = SavedPost.objects.select_related("post").annotate(
liked=Exists(LikedPost.objects.filter(
user=request.user, post_id=OuterRef('post_id'))),
saved=Exists(SavedPost.objects.filter(
user=request.user, post_id=OuterRef('post_id')))
).filter(user_id=request.user.id)
serializer = SavedPostSerializer(obj, many=True)
result = JsonResponse(serializer.data, safe=False)
return result
Все, что я хочу, это показать некоторое поле анотации, используя определенный сериализатор и дополнительное поле, т.е. cs.
Заранее спасибо!