Python 如何在Django中保存API中的数据?
我与用户有评论模型关系 喜欢这个型号Python 如何在Django中保存API中的数据?,python,django,django-rest-framework,Python,Django,Django Rest Framework,我与用户有评论模型关系 喜欢这个型号 class Comment(models.Model): user = models.OneToOneField(User, on_delete=models.CASCADE) comment = models.CharField() type = models.CharField() point = models.CharField() 序列化程序 class CommentSerializer(serializers.M
class Comment(models.Model):
user = models.OneToOneField(User, on_delete=models.CASCADE)
comment = models.CharField()
type = models.CharField()
point = models.CharField()
序列化程序
class CommentSerializer(serializers.ModelSerializer):
class Meta:
model = Card
fields = ['comment', 'type', 'point']
从这里我已经得到了API响应,保存在注释模型中
def save_response_data(data):
# here validate...
json_data = {}
# I want the user instance that is making the request
serializer = CommentSerializer(data=json_data)
if serializer.is_valid():
serializer.save()
return json_data
视图请求api
class UserViewSet(viewsets.ModelViewSet):
queryset = User.objects.all()
...
...
def post(self, request):
serializer = self.serializer_class(data=request.data)
serializer.is_valid(raise_exception=True)
serializer.save()
return Response(serializer.data, status=...)
# Overwrite create method
def create(self, request, *args, **kwargs):
super(UserViewSet, self).create(request, args, kwargs)
# Currently, this is how I am obtaining the user who makes the request
user_id = request.user.id
# Simple queryset build payload to send api
payload = build_payload(user_id)
response = requests.post(url, data=payload)
data = response.json()
save_response_data(data)
我想要发出请求的用户实例
我试着用信号来做这件事,但它不起作用,没有任何想法或评论,这将很有帮助嗨,我使用APIView,我可以访问auth user
class UserView(APIView):
permission_classes = (IsAuthenticated)
authentication_classes = (TokenAuthentication,)
def post(self, request):
user = request.user
...
request.data['user']=user
CommentSerializer(request.data)
你能分享捕获请求的视图的代码吗?@HuLuViCa我编辑了这个问题