Как работать с 2 или более связанными таблицами в запросе Post

У меня есть 3 таблицы: Employee (доступ для постоянных пользователей) CustomUser (доступ только для администраторов) Departament (доступ для постоянных пользователей) У меня есть представление с react, где хранятся пользователи (только администраторы могут войти)

У меня есть другое представление для хранения сотрудников Сотрудники (администраторы и обычные пользователи могут вводить данные)

Проблема в том, что я не знаю, как манипулировать 3 таблицами в одном запросе

В этом представлении стандартный пользователь может зарегистрировать в одном запросе данные этих 3 таблиц

EndPoints

domainapp.com/dashboard/users/

domainapp.com/dashboard/employees/

Логика сотрудника

from rest_framework import status
from rest_framework.response import Response
from rest_framework.views import APIView
from .models import Employee
from .serializer import EmployeeSerializer, DepartamentSerializer


# Employee Logic
class EmployeeList(APIView):
    def get(self, request, format=None):
        employees = Employee.objects.all()[:99]
        serialized_users = EmployeeSerializer(employees, many=True)
        return Response(serialized_users.data, status=status.HTTP_200_OK)


class EmployerRegister(APIView):
    def post(self, request):
        # save all fields all tables
        serialized_user = EmployeeSerializer(data=request.data)
        serialized_employee = EmployeeSerializer(data=request.data)
        serialized_departament = DepartamentSerializer(data=request.data)
        if serialized_user.is_valid() and serialized_employee.is_valid(
        ) and serialized_departament.is_valid():
            # this is wrong?
            serialized_user.save()
            serialized_employee(serialized_user)
            serialized_employee.save()
            serialized_departament(serialized_user)
            serialized_departament.save()

            return Response(serialized_user.data,
                            status=status.HTTP_201_CREATED)
        return Response(serialized_user.errors)
Вернуться на верх