猿问

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

我在Django rest框架中使用模型viewset。其中,查找场公司


    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是company_id


它正在引发错误


    {

        "company": [

            "This field is required."

        ]

    }

serializers.py


    class UserSerializer(DynamicFieldsModelSerializer):


        class Meta:

            model = User

            fields = "__all__"

如果我使公司 allow_null = True,那么创建方法也将不需要它。


我如何才能使创建公司成为必需。


并且 不需要进行更新


UYOU
浏览 140回答 1
1回答

qq_花开花谢_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/
随时随地看视频慕课网APP

相关分类

Python
我要回答