django - Django Rest,如何更新视图集中对象的单个字段?我得到必填字段的 IntegrityError
问题描述
现在我有一个大目录对象,并且有一个请求,我想修改它的一个字段。(其余部分保持不变)。我有必填字段,所以当我执行 PATCH 请求时出现此错误。
null value in column "team_id" of relation "Catalogs_catalog" violates not-null constraint
DETAIL: Failing row contains (ecf8ede4-1438-441b-8e45-152658512d27, null, [], {}, [], Europe/Moscow, t, null, ["a@a.com"]).
我将视图集用于目录视图,并向其添加了一个额外的操作,因此我可以发送一个 PATCH 请求来更新该字段。
视图.py
@action(methods=['patch'], detail=True, url_path='add_to_whitelist', url_name='add_to_whitelist')
def add_to_whitelist(self, request, pk=None):
catalog = self.get_object()
users_to_add = request.data
serializer = WhiteListUpdateSerializer(data=users_to_add, partial=True)
if serializer.is_valid():
serializer.save()
return Response({"message": "Saved the new white list."}, 201)
return Response({"message":"Error creating white list.", "error": serializer.errors}, 400)
序列化程序.py
class WhiteListUpdateSerializer(serializers.ModelSerializer):
class Meta:
model = Catalog
fields = ('whitelist_users',)
partial=True
或重写 partial_update 不起作用。我是 DRF 的新手,我在这里缺少什么?
解决方案
改变
WhiteListUpdateSerializer(data=users_to_add, partial=True)
至
WhiteListUpdateSerializer(catalog, data=users_to_add, partial=True)
推荐阅读
- php - Laravel:如何从 API 获取 json 响应
- r - 在R中将浮点数转换为字符串而不会丢失精度
- angular - Stackblitz:如何使用 Angular 执行测试?
- uwp-xaml - XAML 错误但不是
- active-directory - LDAP 无效凭据 - Active Directory Windows Server 2012 R2
- r - 通过另一个数据帧的两列中的值对两个数据帧中的数据帧进行子集
- matrix - Xcode simd - 平移和旋转矩阵示例的问题
- javascript - d3js v5 + topojson v3 在后台访问对象的属性
- cassandra - 如何在 Cassandra 中设计一个包含事件日期和四列过滤的表格
- c - 函数 read_new_int 的问题