【发布时间】:2021-10-06 10:29:52
【问题描述】:
这是我的第一个问题,在阅读了类似的问题后我没有找到我需要的东西,谢谢你的帮助。
我正在创建一个相当简单的 API,但我想在安全级别使用最佳实践。
要求:SQL Server 中有一个包含 +500 万条记录的表,我应该只允许 READ(所有字段)和 UPDATE(一个字段)。这样数据科学家就可以使用该表中的数据,并通过预测模型(我认为)可以为每条记录分配一个值。
为此,我主要需要两件事:
-
尽管在 Json 中发送了表的所有字段,但只有一个字段被更新(我想我已经用我的序列化器实现了它)。
-
而且,我遇到的问题是,在更新不存在的记录时禁用新记录的创建。
我正在使用 UpdateAPIView 来允许尝试使用这样的 json 进行批量更新(subrrogate_key 在我的表中,我使用 lookup_field 来:
[
{
"subrrogate_key": "A1",
"class": "A"
},
{
"subrrogate_key": "A2",
"class": "B"
},
{
"subrrogate_key": "A3",
"class": "C"
},
]
当使用 partial_update 方法时,使用 update 和这个 perform_update,最后调用 save 并且默认操作是如果没有找到主键(或在 lookup_field 中指定的主键)插入一条新记录。
如果我覆盖它们,我怎样才能使新记录不被插入,并且只更新存在的字段?
我试过了:
Model.objects.filter (subrrogate_key = ['subrrogate_key'])。更新(class= ['class])
Model.objects.update_or_create (...)
如果 Json 中的所有键都存在,它们可以正常工作,因为如果有新键,它们会插入(我不想要这个)。
附:抱歉,我使用翻译器。
【问题讨论】:
-
filter().update()不起作用? -
您能分享一下您的看法吗?
-
bdbd 我会用我的视图更新,但是如果没有找到 pk/key,filter().update() 会插入新记录
标签: django django-rest-framework