Проблемы с получением желаемого ответа от 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
Спасибо