#django #rest
#django #rest
Вопрос:
Итак, у меня есть две модели, и я пытаюсь получить обе модели в моем представлении api. Итак, вот код:
@api_view(['GET'])
def mainPage(request, pk):
thisQuestion = Question.objects.filter(question_number=pk)
thisAnswer = Answer.objects.filter(authuser_id=request.user.id, question_number=pk)
questionSerialized = QuestionSerializer(thisQuestion, many=True)
answerSerialized = AnswerSerializer(thisAnswer, many=True)
return Response(answerSerialized.data, questionSerialized.data)
Очевидно, что проблема заключается в возвращаемой части. Как мне получить оба в этом случае?
Заранее большое вам спасибо.
Ответ №1:
Вы можете вернуть словарь Response
следующим образом:
@api_view(['GET'])
def mainPage(request, pk):
thisQuestion = Question.objects.filter(question_number=pk)
thisAnswer = Answer.objects.filter(authuser_id=request.user.id, question_number=pk)
questionSerialized = QuestionSerializer(thisQuestion, many=True)
answerSerialized = AnswerSerializer(thisAnswer, many=True)
return Response({"answers":answerSerialized.data, "questions": questionSerialized.data})
Обновить
Я полагаю, вы хотите получить 1 элемент для каждого типа. Для этого вы можете использовать get()
вместо filter()
, чтобы получить конкретный элемент и удалить many=True
, чтобы сериализовать конкретный элемент.
@api_view(['GET'])
def mainPage(request, pk):
thisQuestion = Question.objects.get(question_number=pk)
thisAnswer = Answer.objects.get(authuser_id=request.user.id, question_number=pk)
questionSerialized = QuestionSerializer(thisQuestion)
answerSerialized = AnswerSerializer(thisAnswer)
return Response({"answer":answerSerialized.data, "question": questionSerialized.data})
Комментарии:
1. Пожалуйста. Рад слышать, что это сработало для вас. Кстати, я обновил ответ, чтобы добавить еще один вариант. Пожалуйста, взгляните на это.