代码之家  ›  专栏  ›  技术社区  ›  Somil

更新时不需要查找字段,但创建时需要查找字段

  •  0
  • Somil  · 技术社区  · 6 年前

    我正在Django REST框架中使用模型视图集。 查找字段的位置 公司

        class UserViewSet(viewsets.ModelViewSet):
            """
            A viewset for viewing and editing user instances.
            """
            serializer_class = UserSerializer
            queryset = User.objects.all()
            lookup_field = 'company'
    

    单位 创建用户时需要。 post方法-/localhost/user/

    但是当我试图更新 Put方法-/localhost/user/1/ 这里1是公司ID

    它引起错误

        {
            "company": [
                "This field is required."
            ]
        }
    

    串行化

        class UserSerializer(DynamicFieldsModelSerializer):
    
            class Meta:
                model = User
                fields = "__all__"
    

    如果我做 公司 允许空=真 那么它也不需要创建metod。

    我该怎么做 公司 创建时需要。

    不需要的 用于更新

    1 回复  |  直到 6 年前
        1
  •  0
  •   Ykh    6 年前

    PUT 方法是更新,它需要你上传你所有的模型字段数据, PATCH 方法是部分更新,只需要上载部分模型字段数据。

    查看您将看到的源代码:

    def partial_update(self, request, *args, **kwargs):
        kwargs['partial'] = True
        return self.update(request, *args, **kwargs)
    
    def update(self, request, *args, **kwargs):
        partial = kwargs.pop('partial', False)
        instance = self.get_object()
        self.before_update(instance)
        serializer = self.get_serializer(instance, data=request.data, partial=partial)
        ....
    

    partial=partial 重要的是,还是你需要的? 补丁 方法- /localhost/user/1/