need some help with serializers.
I am a beginner in DRF. I query for objects and serialize each with their own model serializer then manually write down all serializer data in the response in json format. I am sure there is a better way to do this that could also be more efficient.
Currently my code looks like this:
class GetData(APIView):
permission_classes = [IsAuthenticated]
def get(self, request):
user = request.user
subjects = Subject.objects.all()
serializersubject = SubjectSerializer(subjects, many=True)
subject_skill_levels = SubjectSkillLevel.objects.filter(user=user)
serializer2 = SubjectSkillLevelSerializer(subject_skill_levels, many=True)
topic_skill_levels = TopicSkillLevel.objects.filter(user=user)
serializer3 = TopicSkillLevelSerializer(topic_skill_levels, many=True)
progress = Progress.objects.filter(user=request.user).order_by("-date")
todays = progress[:1][0]
last_5_days = progress.exclude(id=todays.id)[:5]
todays_serializer = ProgressSerializer(todays)
last_5_days_serializer = ProgressSerializer(last_5_days, many=True)
history = ExerciseToken.objects.filter(user=request.user, completed=True).order_by("-id")
history_serializer = HistorySerializer(history, many=True)
notes = Note.objects.filter(user=request.user)
notes_serializer = NotesSerializer(notes, many=True)
data = {
"username": user.username,
"subjects": serializersubject.data,
"skill_level": {
"subjects" : serializer2.data,
"topics" : serializer3.data
},
"progress": {
"todays": todays_serializer.data,
"last_5_days": last_5_days_serializer.data
},
"history": history_serializer.data,
"notes": notes_serializer.data
}
return Response(data)