覆盖 django 休息响应仅返回 pk

问题描述 投票:0回答:1

我试图覆盖 django 创建新对象时发送的响应。

我只需要返回创建对象的主键,而不是整个对象。

我试图覆盖的函数是这样的:

def create(self, request, *args, **kwargs):
    serializer = self.get_serializer(data=request.data)
    serializer.is_valid(raise_exception=True)
    self.perform_create(serializer)
    headers = self.get_success_headers(serializer.data)
    data = serializer.data
    print(data['id'])
    return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)

数据对象内的字段“id”的名称可以因每个实体而不同。

最终的代码应该是这样的:

return Response(pk, status=status.HTTP_201_CREATED, headers=headers)

知道如何让它发挥作用吗?

提前致谢

python django django-rest-framework django-rest-viewsets
1个回答
0
投票

data
 期望的 
Response
dict
,所以:

def create(self, request, *args, **kwargs):
    ...

    return Response(
        {"pk": serializer.data["id"]},
        status=status.HTTP_201_CREATED,
        headers=headers,
    )
© www.soinside.com 2019 - 2024. All rights reserved.