Операция обновления в модели удаляет всех пользователей, хранящихся в поле "многие ко многим" в этой модели - Django

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

home_tuition_students = models.ManyToManyField(CustomUser, blank=True, related_name='home_tuition_students')
    
general_tuition_students = models.ManyToManyField(CustomUser, blank=True, related_name='general_tuition_students')

Вышеуказанные поля находятся внутри модели, которая на самом деле является моделью профиля учителя, где хранится другая информация об учителях, такая как имя, номер телефона и т.д. Теперь я столкнулся со странной проблемой: всякий раз, когда учитель выполняет операцию обновления, например, меняет номер телефона или любую другую информацию, все ученики, хранящиеся в поле many to many, удаляются после обновления. Обновление api выглядит следующим образом:

api_view(['PUT'])
@permission_classes([IsAuthenticated])
@parser_classes([MultiPartParser, FormParser])     
def edit_teacher_detail(request):
  
   data = request.data
   
   if data is not None:
     
     queryset = TeacherDetail.objects.get(user = request.user)
     
     serializer = TeacherDetailSerializer(instance=queryset, data = data)
     
     try:
       if serializer.is_valid():
         serializer.save()
         return Response({'message':"details edited"} ,status=status.HTTP_200_OK)
       else:
         print(serializer._errors)
         return Response({'message': serializer._errors}, status=status.HTTP_400_BAD_REQUEST)
     except Exception as e:
       print(e)
       return Response({"message": str(e)},status=status.HTTP_500_INTERNAL_SERVER_ERROR)
     
     
   
   else: 
      return Response({'message':'no query recieved'}, status=status.HTTP_400_BAD_REQUEST)

Я не знаю, как и почему это происходит. Пожалуйста, предложите мне решение для этого.

Хорошо, я просто играл с кодом, чтобы понять, что происходит не так, и обнаружил, что проблема была вызвана используемым сериализатором. Сериализатор, который использовался, сериализовал все поля, включая поле many to many. Я понял, что сериализатор должен содержать только те поля, которые могут быть обновлены пользователем, иначе он сбросит поле, для которого не было получено данных.

Я не знал, что это нужно сделать для использования сериализаторов при выполнении операции обновления.

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