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

Python 更新时不需要查找字段,但创建时需要查找字段,python,django,django-rest-framework,Python,Django,Django Rest Framework,我正在django rest框架中使用模型视图集。 其中查找字段是company 创建用户时需要公司。 POST方法-/localhost/user/ 但是当我试图更新 PUT方法-/localhost/user/1/ 这里1是公司id 这是一个错误 { "company": [ "This field is required." ] } 序列化程序.py class UserSerializer(DynamicF

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

创建用户时需要公司。 POST方法-/localhost/user/

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

这是一个错误

    {
        "company": [
            "This field is required."
        ]
    }
序列化程序.py

    class UserSerializer(DynamicFieldsModelSerializer):

        class Meta:
            model = User
            fields = "__all__"
如果我让公司允许_null=True 那么创建metod也不需要它

如何创建创建所需的公司


更新不需要

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
才是最重要的,或者你需要
PATCH
方法-
/localhost/user/1/

你能显示
用户
模型吗?@jerinterGeorge用户模型与djagno的默认用户模型相同,只是添加了外键公司。
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)
    ....