为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

蝴蝶刀刀 2022-01-18 15:35:06
根据我在下面放置的给定数据对象。我想问如何在 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)
查看完整描述

1 回答

?
回首忆惘然

TA贡献1847条经验 获得超11个赞

当一个序列化器被实例化并传递了 many=True 时,一个 ListSerializer 实例将被创建。然后序列化器类成为父 ListSerializer 的子级。ListSerializer 类提供了一次序列化和验证多个对象的行为。


当您可能想要自定义 ListSerializer 行为时,有一些用例。在您的情况下,您希望 ListSerializer 进行批量更新。您需要定义一个新的自定义 ListSerializer


class 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 = UserListSerializer

https://www.django-rest-framework.org/api-guide/serializers/#customizing-listserializer-behavior


查看完整回答
反对 回复 2022-01-18
  • 1 回答
  • 0 关注
  • 172 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信