使用 partial_update 时如何更新另一个字段?

How to update another field when using partial_update?

我在我的用户模型上使用 partial_updates,我希望在 partial_update 发生时将用户模型实例上的 is_active 更改为 True - 即使 is_active 没有暴露给端点。我的 class 看起来像这样:


class UserInvitationUpdate(mixins.UpdateModelMixin, generics.GenericAPIView):
    serializer_class = serializers.UserSerializer
    queryset = User.objects.all()

    def get(request, *args, **kwargs):
        username = kwargs.get('username')
        token = kwargs.get('token')
        return activated_user(username, token)

    def get_object(self):
        username = self.kwargs.get('username')
        user = User.objects.get(username=username)
        return user
    
    def put(self, request, *args, **kwargs):
        username = self.kwargs.get('username')
        token = self.kwargs.get('token')

        if my_if_statement_is_true:

            # TODO set user to active 
            # how do I set is_active = True for the user model instance?
            return self.partial_update(request, *args, **kwargs)


你有多种方法来处理这个问题。您可以更改序列化程序 .save() 方法并手动将字段 is_active 设置为 true,或者通过更新视图的 perform_update() 方法在视图中设置它:

def perform_update(self, serializer):
    serializer.save(is_active=True)

更多信息here