如何批量插入或创建多个数据

根据我在下面放置的给定数据对象。我想问如何在 django 中批量插入或创建多个数据。我在下面提供了包括我的序列化程序和 python 代码。我想从下面的数据对象创建/插入每个密码。不用担心其他数据。我也想用序列化器来做。我确实尝试遍历 data: 中的 each_employee_data 的数据。我的代码有任何问题。谢谢你。

代码

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("each_employee_data", 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=each_employee_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)


蝴蝶刀刀
浏览 173回答 1
1回答

回首忆惘然

当一个序列化器被实例化并传递了 many=True 时,一个 ListSerializer 实例将被创建。然后序列化器类成为父 ListSerializer 的子级。ListSerializer 类提供了一次序列化和验证多个对象的行为。当您可能想要自定义 ListSerializer 行为时,有一些用例。在您的情况下,您希望 ListSerializer 进行批量更新。您需要定义一个新的自定义 ListSerializerclass CustomListSerializer(serializers.ListSerializer):    ...    def create(self, validated_data):        ...class CustomSerializer(serializers.Serializer):    ...    class Meta:        list_serializer_class = CustomListSerializer在你的情况下,它应该是class UserListSerializer(serializers.ListSerializer):        ...        def create(self, validated_data):            user = [User(**item) for item in validated_data]            return User.objects.bulk_create(User)class UserSerializer(serializers.Serializer):            ...            class Meta:                list_serializer_class = UserListSerializerhttps://www.django-rest-framework.org/api-guide/serializers/#customizing-listserializer-behavior
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python