我在Django REST Framework中遇到了一个奇怪的问题。我正在尝试使用PATCH请求向用户添加组或从用户中删除组。
我能够修补/api/users/:id/
以更新最初为空的groups
列表。例如,以下操作会产生以下结果:
PATCH /api/users/:id/ {"groups": [1]}
->使用groups: [1]
]的用户结果>PATCH /api/users/:id/ {"groups": [1, 2]}
->使用groups: [1,2]
]的用户结果>PATCH /api/users/:id/ {"groups": [1]}
->导致用户返回groups: [1]
因此,我正在成功通过PATCH请求更新状态。但是以下内容无法相应更新:
[PATCH /api/users/:id/ {"groups": []}
->结果用户仍然在groups: [1]
这是我的UserSerializer类:
class UserSerializer(serializers.ModelSerializer): groups = serializers.PrimaryKeyRelatedField(many=True, queryset=Group.objects.all(), allow_empty=True, required=False) class Meta: model = User fields = ( 'id', 'username', 'first_name', 'last_name', 'is_staff', 'is_authenticated', 'is_superuser', 'email', 'groups' )
我怀疑它与
PrimaryKeyRelatedField
有关-我尝试了许多构造方法的参数组合都无济于事。
我在Django REST Framework中遇到了一个奇怪的问题。我正在尝试使用PATCH请求向用户添加组或从用户中删除组。我能够修补到/ api / users /:id /以更新组列表,...
我有同样的问题:问题是,当您传递一个空列表时,PATCH方法会像识别“没有字段”那样识别它。既然如此,没有领域的策略就是保持它不变。您可以将HTTP方法更改为UPDATE,然后将整个对象再次提供给服务器以解决该问题,但当然不是解决方案。