gpt4 book ai didi

python - 如何使用 Django Rest Framework 在对象创建调用期间创建外键相关对象?

转载 作者:行者123 更新时间:2023-12-01 02:29:46 25 4
gpt4 key购买 nike

假设我有模型 A 和 B。

模型 A 具有一系列字段,其中包括用户字段,该字段由创建对象 A 的用户填充。

创建对象 A 时,我想使用创建对象 A 的用户创建一堆对象 B,并可能使用对象 A 本身作为外键。

我的模型 View 集如下所示:

class OrganizationViewSet(DynamicModelViewSet):
queryset = Organization.objects.all()
serializer_class = OrganizationSerializer
permission_classes = (IsAdminOfPermission,)

因此,当创建一个组织时,我想使用创建该组织的用户并可能使用组织对象本身来创建一堆对象 B。

我该怎么做?

最佳答案

实现序列化器创建方法中的逻辑

class OrganizationSerializer(serializers.ModelSerializer):
# ...
# ...
# ...
def create(self, validated_data):
user = validated_data.get('user')
organization = Organization.objects.create(**validated_data)
# create model B with `user` and `organization`
# like ModelB.objects.create(user=user, organization=organization, ...)
return organization

要将用户从 View 传递到序列化器,您必须通过序列化器的 save 方法将其发送。

例如

class OrganizationList(APIView):
queryset = Organization.objects.all()
serializer_class = OrganizationSerializer
permission_classes = (IsAdminOfPermission,)

def post(self, request, format=None):
serializer = OrganizationSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save(user=request.user)
return Response(serializer.data, status=status.HTTP_201_CREATED)

关于python - 如何使用 Django Rest Framework 在对象创建调用期间创建外键相关对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46962451/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com