在Django,a boolean field in MySQL is stored as a TINYINT。当我检索它时,我得到0或1.我不应该得到假或真?有没有办法实现这种行为?
答案 0 :(得分:7)
您可以为模型创建自己的方法,为您评估此方法:
class User(models.Model):
active_status = models.BooleanField(default=1)
def is_active(self):
return bool(self.active_status)
然后,您针对此字段执行的任何测试都可以引用该方法:
>>> u.is_active()
True
你甚至可以把它变成一个属性:
class User(models.Model):
active_status = models.BooleanField(default=1)
@property
def is_active(self):
return bool(self.active_status)
这样该类用户甚至不必知道它是作为一种方法实现的:
>>> u.is_active
True
答案 1 :(得分:1)
以上适用于NullBooleanField
的方法:
result = models.NullBooleanField()
def get_result(self):
if self.result is None:
return None
return bool(self.result)
答案 2 :(得分:1)
是否存在一种情况,您预计这会导致基于类型的不同行为?
>>> 1 == True
True
>>> 0 == False
True
>>> int(True)
1
>>> int(False)
0
答案 3 :(得分:0)
>>> u=User.objects.get(pk=1)
>>> u.is_active
1
>>> u.is_active==1
True
>>>
布尔列返回1或0的原因在您的问题的链接上。