Skip to main content
 首页 » 编程设计

python之django 对象中的保存方法不保存 bool 模型字段,它被传递为 false

2024年08月26日30oomusou

我有这个模型:

class Comment(models.Model): 
    comment_text = models.TextField("Comentário") 
    user = models.ForeignKey(Profile) 
    created = models.DateTimeField(auto_now_add=True, verbose_name="Criação") 
    updated = models.DateTimeField(auto_now=True, verbose_name="Última modificação") 
    confidential = models.BooleanField("Confidencial", default=False) 

我有这个 View 集(使用休息框架):

    @detail_route(methods=['POST'], permission_classes= [IsOwnerOrReadOnly]) 
    def set_confidential(self, request, pk=None): 
        comment = self.get_object() 
        if(request.data.get("booleanField", None) != None): 
            comment.confidential = request.data["booleanField"]; 
            comment.save() 
            return Response({'from':'set_confidential','status':_("Confidential status changed")}) 
        else: 
            return Response({"status":status.HTTP_400_BAD_REQUEST}) 

问题是,当我将“False”值传递给该 View 时,我的对象已更新,但字段“confidential”仍然为 True(假设它与之前一样)。为什么会这样?

请您参考如下方法:

您应该保存comment 对象。请注意,在 bool 上下文中,任何非空字符串都被视为 True:

comment.confidential = (request.data["booleanField"].lower() == 'true') 
comment.save()