Android Retrofit загрузка изображений и текста в одном запросе

У меня есть приложение для Android, которое имеет функцию формы, где я собираю данные, эти данные содержат ответы изображения и текстовые ответы и каждый ответ имеет идентификатор вопроса, который мне нужно отправить также, чтобы знать, какой вопрос сохранить ответ на него в бэкенд API, я пытался отправить все ответы и изображения и текст в одном запросе с помощью Retrofit, но получил несколько ошибок, поэтому я подумал о другом решении, но оно больше не работает вот мой код

Вот мое решение и мне нужно его улучшить

Код повтора для отправки запроса с данными

@Multipart
@POST(SUBMIT_FORM)
suspend fun submitFormAPI(
        @Header("Authorization") token: String,
        @Part("questions_answers") questions_answers: List<QuestionAnswer>,
        @Part answer_image: MultipartBody.Part?,
        @Part("question_id") question_id: String?,
): Response<FormResponse>

и вот модель QuestionAnswer, я пытался поместить answer_image внутрь нее, но не работает

data class QuestionAnswer(
    val question_id: String,
    val answer_value: String? = null,
)

Итак, в этой функции после сбора данных мне нужно пройтись циклом по questionImagesAnswers и на каждой итерации отправлять запрос с изображением и его question_id вместе с другими ответами в questionAnswers

    fun onFormSubmit() {

        val questionAnswers = mutableListOf<QuestionAnswer>()
        val questionImagesAnswers = mutableListOf<QuestionModel>()

        questionImagesAnswers.forEach { questionImagesAnswer ->
            formViewModel.submitFormAPI(
                token = token,
                questionAnswers = questionAnswers,
                answer_image = questionImagesAnswer.answer_image_file,
                question_id = questionImagesAnswer.question_id,
            )
        }
    }

Что мне нужно, если есть способ, который поможет мне поместить answer_image в QuestionAnswer с его идентификатором вопроса, чтобы это выглядело так

data class QuestionAnswer(
    val question_id: String,
    val answer_value: String? = null,
    val answer_image: MultipartBody.Part?
)

и затем отправлять данные таким образом, не делая итераций:

submitFormAPI(
     token = token,
     questionAnswers = questionAnswers,
)

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

class SubmitFormAPI(views.APIView):
    
    def post(self, request):
        
        questions_answers = request.data['questions_answers']

        for question_answer in questions_answers:
            question = Question.objects.filter(question_id=question_answer['question_id']).first()
            if question:
                if "answer_value" in question_answer:
                    question.answer_value = question_answer['answer_value']
                if "answer_image" in question_answer:
                    question.answer_image = question_answer['answer_image']
                question.save()

        return Response({
            "status": status.HTTP_200_OK,
            "message": "Form submitted successfully!",
        })

Я пробовал решение выше, но оно не работает для меня, и я не знаю почему, кто-нибудь знает, что мне делать в такой ситуации? Любая помощь или советы?

Спасибо

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