Проблемы с получением желаемого ответа от django restframework

Я работаю над приложением на основе Flutter (фронтенд), django (бэкенд), mongodb atlas (база данных).

В моем приложении пользователи могут добавлять посты, ставить лайки или комментировать эти посты (прямо как в facebook!)

В django в моем models.py есть отдельные таблицы для постов, Reacts на посты (для кнопки like), комментарии к постам. вот код для моих models.py

class PostsComments(models.Model):
    commentID = models.AutoField(primary_key=True)
    content = models.TextField()
    createTime = models.TextField()
    updateTime = models.TextField()
    approved = models.BooleanField(default= True, editable= True)
    userID = models.ForeignKey('Users', on_delete=models.CASCADE, name="userID")
    postID = models.ForeignKey('Posts', on_delete=models.CASCADE, name="postID")

class PostsReacts(models.Model):
    reactID = models.AutoField(primary_key=True)
    createTime = models.TextField()
    updateTime = models.TextField()
    react = models.BooleanField(default= False, editable= True)
    userID = models.ForeignKey('Users', on_delete=models.CASCADE, name="userID")
    postID = models.ForeignKey('Posts', on_delete=models.CASCADE, name="postID")

class Posts(models.Model):
    postID = models.AutoField(primary_key=True)
    content = models.TextField()
    createTime = models.TextField()
    updateTime = models.TextField()
    approved = models.BooleanField(default= True, editable= True)
    hasVideo = models.BooleanField(default= False, editable= True)
    hasImage = models.BooleanField(default= False, editable= True)
    #images = ListField(models.TextField)
    #videos = ListField(models.TextField)
    images = models.TextField()
    videos = models.TextField()
    #comments = [PostsComments()]
    #reacts = [PostsReacts()]
    customerID = models.ForeignKey('Customers', on_delete=models.CASCADE, name="customerID")
    def __str__(self):
        return f"ID: {self.postID}"

view.py

from django.http.response import HttpResponseRedirect
from rest_framework.decorators import api_view
from rest_framework.response import Response
from rest_framework.serializers import Serializer

#seerializers
from .serializers import BookingHistorySerializer, BookingSerializer, CommentsSerializer, CustomerSerializer, ExpertSerializer, PostsSerializer, PriceListSerializer, ReactsSerializer, ServicesSerializer, UserSerializer
from .models import Bookings, BookingsHistory, PostsComments, PostsReacts, PriceList, Services, Users, Experts, Customers, Posts

@api_view(['POST','GET'])
def getBlogs(request):
    blogs = Posts.objects.all()
    serializer = PostsSerializer(blogs, many = True)
    return Response(serializer.data)

мой PostSerializer выглядит следующим образом,

class PostsSerializer(ModelSerializer):    

    class Meta:
        model = Posts
        fields = '__all__'

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

вот желаемый ответ, который я хочу, чтобы django отправил на мой фронтенд.

{
[
    {
        "postID": 1,
        "content": "this post has no video",
        "createTime": "November 9, 2021",
        "updateTime": "November 9, 2021",
        "approved": true,
        "hasVideo": false,
        "hasImage": false,
        "images": "",
        "videos": "",
        "customerID": 1
along with the above data I want information about whether the current users has liked this post or not, lets suppose user has liked it earlier so,
        "react": True
    },
    {
        "postID": 2,
        "content": "demo post 2",
        "createTime": "November 10, 2021",
        "updateTime": "November 10, 2021",
        "approved": true,
        "hasVideo": false,
        "hasImage": false,
        "images": "",
        "videos": "",
        "customerID": 1
along with the above data I want information about whether the current users has liked this post or not, lets suppose user has not liked it earlier so,
        "react": False
    }
]

Прошу прощения, если мой вопрос недостаточно ясен, в любом случае, если требуется дополнительная информация, попросите ее. Любая помощь будет оценена по достоинству TIA.

Я думаю, что ваша проблема здесь

{
  [ // here you don't specify a json key for this list of object
    {
        "postID": 1,
        "content": "this post has no video",
        "createTime": "November 9, 2021",
    },
  ]
}
{
  "items" : [ // just do it like this
    {
        "postID": 1,
        "content": "this post has no video",
        "createTime": "November 9, 2021",
    },
  ]
}

И могу я предложить вам для парсинга json во flutter использовать такие инструменты как Quicktype

Спасибо

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