Django REST API无法编辑Group:POST请求新增而非更新问题求助
问题解决:Groups接口POST请求新增而非更新的问题
核心错误原因
你用错了HTTP请求方法和资源定位规则:
- POST请求的语义是创建新资源,发送到
/groups/时,DRF会自动调用序列化器的create方法生成新的Group记录。 - 更新现有资源需要使用PUT/PATCH请求,且必须定位到具体的Group实例URL(带上目标记录的id)。
具体解决步骤
1. 使用正确的请求方式与URL
要更新id为8079bf12-bb58-4ea0-a810-58a223d84be7的Group,发送PUT或PATCH请求到以下URL:
http://localhost:8000/groups/8079bf12-bb58-4ea0-a810-58a223d84be7/
请求体无需携带id(模型中id字段设置了editable=False,无法被修改),只需传入要更新的字段:
{ "name": "Cozinha 123" }
2. 确认序列化器配置
你的GroupsSerializer是标准的ModelSerializer,默认已经实现了update方法,无需额外修改即可正常处理更新逻辑:
class GroupsSerializer(serializers.ModelSerializer): class Meta: model = models.Groups fields = '__all__'
额外说明
强烈遵循REST规范使用PUT/PATCH做更新操作,不要用POST模拟更新——这会混淆接口语义,增加后续维护成本。如果特殊场景必须用POST,需要自定义视图的perform_create或post方法,手动判断是否存在对应id的记录再决定创建或更新,但不推荐这种非常规做法。
内容的提问来源于stack exchange,提问作者Ricardo
相关产品推荐
相关产品推荐

