如果Django Rest框架中特定id上没有可用的对象,如何使用PUT方法在该id上创建对象?
发布于 2020-03-19 13:34:02
你可以试试update_or_create()
例如:
class YourAPIView(APIView):
def put(self, request, **kwargs):
serializer = YourSerializer(data=request.data)
serializer.is_valid(raise_exception=True)
obj, created = YourModel.objects.update_or_create(
id=kwargs['id'],
defaults=serializer.validated_data)
return Response()
发布于 2020-03-19 18:28:28
对于一个不存在的对象的PUT请求,RESTFUL API应该会出错。这个想法是,如果它曾经存在于某个点来创建id,那么它已经被删除了。删除它比重新创建它更有意义。
如果id是自动生成的,这一点尤其正确。更重要的是,如果它是一个自动递增的整数id,就像Django模型的默认id一样。如果要在这种情况下支持此功能,用户将使用表尚未递增的id创建数据实例potentially leading to errors like this.
https://stackoverflow.com/questions/60756429
复制相似问题