【问题标题】:How to use PUT method to create object in Django如何使用 PUT 方法在 Django 中创建对象
【发布时间】:2020-06-30 13:03:16
【问题描述】:

如果没有可用的对象,如何使用 PUT 方法在特定 id 上创建对象 在 Django Rest Framework 中的那个 id 上?

【问题讨论】:

  • 到目前为止你尝试了什么?

标签: django rest django-models django-rest-framework put


【解决方案1】:

对于不存在的对象的 PUT 请求,RESTFUL API 会出错。这个想法是,如果它曾经存在于创建 id 的某个时间点,那么它已经被删除了。删除它比重新创建它更有意义。

如果 id 是自动生成的,则尤其如此。如果它是一个自动递增的整数 id,比如 Django 模型的默认 id,则更是如此。如果您要在这种情况下支持此功能,用户将创建一个数据实例,其 id 表尚未增加 potentially leading to errors like this.

【讨论】:

    【解决方案2】:

    你可以试试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()
    
    
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-01-19
      • 2021-07-24
      • 1970-01-01
      相关资源
      最近更新 更多