【发布时间】:2020-06-30 13:03:16
【问题描述】:
如果没有可用的对象,如何使用 PUT 方法在特定 id 上创建对象 在 Django Rest Framework 中的那个 id 上?
【问题讨论】:
-
到目前为止你尝试了什么?
标签: django rest django-models django-rest-framework put
如果没有可用的对象,如何使用 PUT 方法在特定 id 上创建对象 在 Django Rest Framework 中的那个 id 上?
【问题讨论】:
标签: django rest django-models django-rest-framework put
对于不存在的对象的 PUT 请求,RESTFUL API 会出错。这个想法是,如果它曾经存在于创建 id 的某个时间点,那么它已经被删除了。删除它比重新创建它更有意义。
如果 id 是自动生成的,则尤其如此。如果它是一个自动递增的整数 id,比如 Django 模型的默认 id,则更是如此。如果您要在这种情况下支持此功能,用户将创建一个数据实例,其 id 表尚未增加 potentially leading to errors like this.
【讨论】:
你可以试试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()
【讨论】: