gpt4 book ai didi

python - 为什么我不能 PATCH Django REST Framework PrimaryKeyRelatedField 到空列表?

转载 作者:行者123 更新时间:2023-12-04 04:21:15 32 4
gpt4 key购买 nike

我在 Django REST Framework 中遇到了一个奇怪的问题。我正在尝试使用 PATCH 请求向用户添加组或从用户删除组。

我可以修补到 /api/users/:id/ 以更新 groups 列表,该列表最初是空的。例如,以下操作会产生这些结果:

  1. PATCH/api/users/:id/{"groups": [1]} -> 用户的结果为 groups: [1]
  2. PATCH/api/users/:id/{"groups": [1, 2]} -> 结果为用户 groups: [1,2]
  3. 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 有关 - 我尝试了构造函数的多种参数组合都无济于事。

最佳答案

这实际上是由于 UserViewSet 中的 partial_update 覆盖中的一个错误

PATCH 在修复此问题后按预期工作,使用默认 partial_update Django REST Framework 提供的用户不应遇到此问题。

关于python - 为什么我不能 PATCH Django REST Framework PrimaryKeyRelatedField 到空列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59256792/

32 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com