MySQL Django模型中的布尔字段?

Jua*_*nti 5 python mysql django boolean

在Django中,MySQL中的布尔字段存储为TINYINT.当我检索它时,我得到0或1.我不应该得到假或真?有没有办法实现这种行为?

jat*_*ism 7

您可以为模型创建自己的方法,为您评估:

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)


fes*_*est 0

>>> u=User.objects.get(pk=1)
>>> u.is_active
1
>>> u.is_active==1
True
>>>
Run Code Online (Sandbox Code Playgroud)

布尔列返回 1 或 0 的原因位于您问题中的链接上。