djangorestframework - 具有默认值True的布尔字段更改为False

时间:2015-05-05 08:20:25

标签: django django-rest-framework

在其他各个字段中,我在 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

3 个答案:

答案 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>/