为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

UYOU 2021-04-26 06:08:23
我在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,那么创建方法也将不需要它。我如何才能使创建公司成为必需。并且 不需要进行更新
查看完整描述

1 回答

?
qq_花开花谢_0

TA贡献1835条经验 获得超7个赞

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/


查看完整回答
反对 回复 2021-05-11
  • 1 回答
  • 0 关注
  • 139 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信