没有得到反序列化器中的ID(Django Rest Framework)

时间:2015-06-23 00:05:47

标签: django rest django-rest-framework

我希望在反序列化后返回新创建的对象的id。但是,为此,我必须再次序列化所有新创建的数据。如果我不这样做,我会收回数据但没有ID。

REST不应该以这种方式工作 - 返回调用者创建的内容吗? 如果它应该,我错过了什么? DRF教程给我的印象是这应该有效(返回ID)。

这是代码:

class ProjectView(APIView):
    authentication_classes = (TokenAuthentication,)
    permission_classes = (IsAuthenticated,)

    def put(self, request, *args, **kwargs):
        ser = ProjectCreateSerializer(data=request.data, context={'user': request.user})
        if  ser.is_valid(raise_exception=True):
            proj = ser.save(user=request.user)
            #### The line below is required to get ids back to the user
            ser = ProjectCreateSerializer(proj)
            return Response(ser.data, status=status.HTTP_201_CREATED)
        return Response(status=status.HTTP_400_BAD_REQUEST)

我在ProjectCreateSerializer上也有一个创建方法,它会在返回之前创建并保存对象。

修改

我希望能够

PUT /project/
{
'name': 'Demo'
}

然后回来:

{
'id': 1,
'name': 'Demo'
}

一次性,没有反序列化 - >数据 - >序列

0 个答案:

没有答案