Как мне просмотреть несколько API в Django REST api?

#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. Пожалуйста. Рад слышать, что это сработало для вас. Кстати, я обновил ответ, чтобы добавить еще один вариант. Пожалуйста, взгляните на это.