Django Python вставляет несколько строк с помощью сериализатора is_valid (Повышение_отключения = True), вставьте каждый объект - PullRequest
0 голосов
/ 17 апреля 2019

Хотел вставить несколько строк в базу данных, но у меня ошибка в if user_serializer.is_valid(raise_exception=True):

Я не знаю, сделал ли я это неправильно в этой строке user_serializer = UserSerializer(data=each_employee_data).

Цель состоит в том, чтобывставить объекты each_employee_data в базу данных, что я сделал не так в своем коде ниже?.

Объект для вставки (данные each_employee_data)

[  
   {  
      'mname':'Tap',
      'password':'helloworld12345',
      'fname':'asd asd',
      'is_applicant':True,
      'email':'asdsa@gmail.com',
      'lname':'asd'
   },
   {  
      'mname':'van',
      'password':'asdasdasdas',
      'fname':'anthonasdasdasd',
      'is_applicant':True,
      'email':'asdsa@gmail.com',
      'lname':'asdas'
   }
]

code

def post(self, request, format=None):
        data = request.data

        print("Data::" , data)

        for each_employee_data in data:
            each_employee_data["verification_code"] = verification_code(self)
            password = hashers.make_password(each_employee_data["password"])
            each_employee_data["password"] = password
            print("hahahahaha", each_employee_data)
            user_serializer = UserSerializer(data=each_employee_data)

            if user_serializer.is_valid(raise_exception=True):

                if not each_employee_data["is_applicant"]:#company
                    company_serializer = CompanySerializer(data=data)
                    if company_serializer.is_valid(raise_exception=True):
                        user_ins = user_serializer.save(password=password)
                        company_serializer.save(user=user_ins)
                else:
                    applicant_serializer = ApplicantSerializer(data=data)
                    if applicant_serializer.is_valid(raise_exception=True):
                        user_ins = user_serializer.save(password=password)
                        applicant_serializer.save(user=user_ins)


                send_confirmation.delay(data)
                if not user_ins.is_applicant:
                    send_business_confirmation.delay(data)
...