在其他各个字段中,我在 models.py 中有一个如下所示的布尔字段:
closur=[]
i=6
dis_tn=distance[i]
headnode=x
for k in headers[headnode]:
if distance[k]<=dis_tn:
if i in headers[k]:
closur.append(x)
closur.append(k)
closur.append(i)
else:
#break
headnode=k
continue
print "Closure of (",x,",",i,")= ",closur
当使用PUT请求修改模型的任一字段时,即使在PUT请求中未指定与其相关的任何内容,is_searchable = models.BooleanField(default=True)
的值也会更改为is_searchable
。
我在这里使用False
。 django rest framework的版本 - 3.0.1
答案 0 :(得分:2)
如果您不想更新is_searchable,则必须在序列化程序类中将其定义为read_only字段。
例如:
class YourSerializer(serializers.ModelSerializer):
is_searchable = serializers.BooleanField(read_only=True)
否则,传递正确的值true / false
答案 1 :(得分:0)
您可以使用 initial
class YourSerializer(serializers.ModelSerializer):
is_searchable = serializers.BooleanField(initial=True)
答案 2 :(得分:0)
我遇到了类似的问题,我发现它与我的 curl 命令有关。您必须添加 -H "Content-Type: application/json"
。
例如
curl -X PUT -H "Content-Type: application/json" -d '{"is_searchable": true}' http://<your-instance>/<your-api>/