django - 在 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 传递给序列化程序的最佳方式?
解决方案
您可以在 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
推荐阅读
- python - 在自定义语义上训练的 spacy 依赖解析器生成不在训练数据中的标签
- html - 在生产中加载 ccs 文件时出现 Nginx + Django 错误
- c# - 如何正确等待 lambda Func 委托 C#
- konvajs - 缩放和平移舞台到中心
- javascript - 如何刷新和/或隐藏脚本内容
- javascript - 捏放大时设置精确的滚动位置
- php - strtotime('-1 month') 如果月份有 31 天,则返回错误的日期
- r - 使用 docker、rbase 和 RODBC 连接到 sql server 时出错
- visual-studio - 将共享项目与构建生成的代码一起使用时避免构建两次
- python - LightGBM GPU win10 pip install