查找字段在更新时不是必需的,但在创建时是必需的

时间:2018-07-26 07:56:11

标签: python django django-rest-framework

我正在django rest框架中使用模型视图集。 查找字段是 company

    class UserViewSet(viewsets.ModelViewSet):
        """
        A viewset for viewing and editing user instances.
        """
        serializer_class = UserSerializer
        queryset = User.objects.all()
        lookup_field = 'company'
创建用户时需要

Company 。 POST方法-/ localhost / user /

但是当我尝试更新时 PUT方法-/ localhost / user / 1 / 这里1是company_id

出现错误

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

serializers.py

    class UserSerializer(DynamicFieldsModelSerializer):

        class Meta:
            model = User
            fields = "__all__"

如果我成立 company allow_null = True 那么创建方法也不需要。

如何创建创建所需的公司

不需要进行更新

1 个答案:

答案 0 :(得分:0)

PUT方法是更新的,需要您上传所有模型字段数据, PATCH方法是partial_update,只需要上传部分模型字段数据即可。

查看您将看到的源代码:

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很重要,或者您需要PATCH方法-/localhost/user/1/