繁体   English   中英

如何将Django模型布尔值字段更新为true?

[英]How to update Django model Boolean field as true?

我正在尝试更新Django模型字段,其中包含布尔值。 这里有一个用户将申请项目,默认情况下,一个字段将自动为false。 在检查了此插入之后,系统的管理将使该字段为真并批准提案。 所以,现在我想将该字段更新为“ True”

def project(request, project_id):
    all_primary_info = ProjectPrimaryInfo.objects.get(pk=project_id)
    if all_primary_info.approval == 'False':
        all_primary_info.approval.update(True)
    return render(request, 'administration/all_project_status.html')

这是ProjectPrimaryInfo模型:

class ProjectPrimaryInfo(models.Model):
    id = models.AutoField(primary_key=True)
    s_id = models.ForeignKey(Student, null=True, blank=True, on_delete=models.CASCADE)
    category = models.ForeignKey(Category, on_delete=models.CASCADE)
    approval = models.BooleanField(default=False)
    p_type = models.CharField(max_length=20)  # project or thesis
    p_name = models.CharField(max_length=50)
    p_description = models.CharField(max_length=500)
    vision = models.CharField(max_length=500)
    charter = models.CharField(max_length=250)

    def __str__(self):
        return self.p_name

我希望all_primary_info.approval将为“ true”

问题在于您对此行的看法

if all_primary_info.approval == 'False':

在模型中,您将approval定义为布尔值字段,但是在上面的行中,我们使用了'False' ,它是String而不是NOT Bool,因为您将其用单个反逗号括起来。 实际上,您是在问Django if <Boolean Value> == <String Value>始终计算为false,因此if条件未执行, if代码。 要更正此问题,您需要删除False周围的反逗号。 所以你上面的代码行应该是

if all_primary_info.approval is False:

    # Do your stuff like this
    # all_primary_info.approval(True) is not correct. 
    # You can simply perform a .save on model instance to update the value

    all_primary_info.approval = True
    all_primary_info.save()

希望这能解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM