提问人:Reactoo 提问时间:5/13/2022 更新时间:5/13/2022 访问量:863
data._mutable= Django rest 框架中的 True
data._mutable= True in Django rest framework
问:
我已经看过很多次了,到处都看过,但无法弄清楚它的实际含义,它是强制性的吗?我以前没有在我的代码中使用过它,我不确定我是否应该使用它。data._mutable = True or False
代码片段看起来有点像这样。
def update(self, request, *args, **kwargs):
instance = self.get_object()
data = request.data
if data.get("something") == "null":
data._mutable = True
data["something"] = None
data._mutable = False
为什么我们需要将 True 或 False 分配给数据对象的私有属性_mutable。??
答:
1赞
willeM_ Van Onsem
5/13/2022
#1
如果使用 FormParser
[drf-doc] 或 MultiPartParser
[drf-doc] 或其他解析为 QueryDict
[Django-doc] 的解析器作为解析器,则默认情况下是不可变的。这意味着它将拒绝对其进行任何更改,因此您无法添加、删除或编辑键值对。QueryDict
通过设置该属性,可以防止引发错误,从而改变 .但这不是好的做法,因为没有记录可以通过将属性设置为 来使可变。通常你使用 .copy()
[Django-doc],它将返回一个可变的深层副本,所以:._mutable
QueryDict
QueryDict
._mutable
True
def update(self, request, *args, **kwargs):
instance = self.get_object()
data = request.data
if data.get('something') == 'null':
data = data.copy()
data['something'] = None
# …
评论
0赞
Reactoo
5/13/2022
将 null 作为值或 None 不是一回事吗?我没有看到任何需要将 null 转换为 None 的情况。
1赞
willeM_ Van Onsem
5/13/2022
@Reactoo:这取决于数据的处理程序。在某些情况下,可能需要将其转换为 ,尽管对于有效的序列化程序来说,情况可能并非如此。null
None
0赞
Reactoo
6/5/2022
@Williem,你能帮我吗?stackoverflow.com/questions/69770813/......
评论
data['something'] = None
request.data