首页 > 解决方案 > 在 Django Rest Framework 中创建新对象之前使用序列化器数据获取外部 API 信息

问题描述

我在 Django REST 框架中添加了一个链接到用户模型的配置文件模型。

在通过 ModelViewSet 创建新对象之前,我必须使用配置文件信息(尚未保存)在外部 API(Python 请求)中创建一个“客户”,并且我想将返回的 ID 保存在我的配置文件模型中。

现在我的 ModelViewSet 看起来像:

视图.py

class ProfileViewSet(viewsets.ModelViewSet):
    serializer_class = ProfileSerializer
    permission_classes = [IsAuthenticated]

    def get_queryset(self):
        return Profile.objects.filter(user=self.request.user)

    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

序列化程序.py

class ProfileSerializer(serializers.ModelSerializer):
    class Meta:
        model = Profile
        # fields = '__all__'
        exclude = ('user',)

何时以及哪种方式是创建外部客户并将 ID 传递给序列化程序的最佳方式?

标签: django

解决方案


您可以在 perform_create 上执行此操作:

def perform_create(self,serializer):
    response = requests.post('your request url',data={*customer_save_data*})
    if response.status_code == 200:
        customer_id = response.json()['customer_id']
        serializer.save(user=self.request.user,customer_id=customer_id)
    else:
        #you can raise exception here

推荐阅读