Немного запутанный вопрос, но, насколько я понимаю, у вас есть запрос, который в какой-то момент содержит QueryDict с данными в request.POST, но на более позднем этапе кода содержит пустой QueryDict: {} в запросе .POST, и вы ищете причину, почему и где данные исчезают.
Документы Django говорят, что QueryDict в HttpRequest является неизменным и не может быть изменен. Поэтому вам, вероятно, не нужно искать код, изменяющий значение запроса. POST QueryDict, но есть код, который заменяет весь запрос. POST QueryDict другим.
Я предполагаю, что вы присваиваете значение 'GET' для request.method в некоторый момент в коде, поскольку вы говорите, что в функции номер два request.method изменяется на GET
При работе с ответом типа PUT некоторое время назад я обнаружил, что django фактически применяет логику к объекту HttpResponse, если response.method изменен, что приводит к изменению request.POST QueryDict.