You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Django REST Framework自定义ModelViewSets:PUT请求仅返回成功消息

嘿,刚上手DRF的话这个需求其实很好实现,我给你拆解下具体步骤~

实现PUT请求仅返回成功消息的方案

核心思路就是重写ModelViewSet中的update方法——DRF默认的update方法会返回序列化后的模型实例数据,我们只需要修改它的响应内容,换成自定义的成功提示即可。

步骤1:自定义ModelViewSet

在你的views.py里创建一个继承自ModelViewSet的自定义视图集,重写update方法:

from rest_framework import viewsets
from rest_framework.response import Response
from rest_framework import status
from .models import YourModel  # 替换成你实际的模型类
from .serializers import YourSerializer  # 替换成你实际的序列化器

class CustomModelViewSet(viewsets.ModelViewSet):
    queryset = YourModel.objects.all()
    serializer_class = YourSerializer

    def update(self, request, *args, **kwargs):
        # 先执行DRF默认的更新逻辑,确保数据正常保存到数据库
        partial = kwargs.pop('partial', False)
        instance = self.get_object()
        serializer = self.get_serializer(instance, data=request.data, partial=partial)
        serializer.is_valid(raise_exception=True)
        self.perform_update(serializer)

        # 这里返回自定义的成功消息,替代默认的实例数据响应
        return Response(
            {"message": "数据更新成功!"},
            status=status.HTTP_200_OK
        )

步骤2:序列化器保持常规定义

你的序列化器不需要做特殊修改,按照正常的ModelSerializer写法来就行,比如:

from rest_framework import serializers
from .models import YourModel

class YourSerializer(serializers.ModelSerializer):
    class Meta:
        model = YourModel
        fields = '__all__'  # 或者指定你需要序列化的字段列表

额外处理:适配PATCH请求(可选)

如果你希望部分更新的PATCH请求也返回同样的成功消息,可以直接让partial_update调用我们重写的update方法:

def partial_update(self, request, *args, **kwargs):
    kwargs['partial'] = True
    return self.update(request, *args, **kwargs)

这样不管是PUT全量更新还是PATCH部分更新,操作成功后都会返回你设置的成功消息,而不会返回模型实例的数据啦~

内容的提问来源于stack exchange,提问作者Shibu Addi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 03:22:56