Jua*_*nti 5 python mysql django boolean
在Django中,MySQL中的布尔字段存储为TINYINT.当我检索它时,我得到0或1.我不应该得到假或真?有没有办法实现这种行为?
您可以为模型创建自己的方法,为您评估:
class User(models.Model):
active_status = models.BooleanField(default=1)
def is_active(self):
return bool(self.active_status)
Run Code Online (Sandbox Code Playgroud)
然后,您针对此字段执行的任何测试都可以引用该方法:
>>> u.is_active()
True
Run Code Online (Sandbox Code Playgroud)
你甚至可以把它变成一个属性:
class User(models.Model):
active_status = models.BooleanField(default=1)
@property
def is_active(self):
return bool(self.active_status)
Run Code Online (Sandbox Code Playgroud)
所以班级用户甚至不必知道它是作为一种方法实现的:
>>> u.is_active
True
Run Code Online (Sandbox Code Playgroud)
>>> u=User.objects.get(pk=1)
>>> u.is_active
1
>>> u.is_active==1
True
>>>
Run Code Online (Sandbox Code Playgroud)
布尔列返回 1 或 0 的原因位于您问题中的链接上。