[英]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.