我希望在反序列化后返回新创建的对象的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'
}
一次性,没有反序列化 - >数据 - >序列