我从我们拥有的旧系统“继承”了一个数据库,其中(除了其他丑陋的东西)某个表中的一列应该是 bool 值,而不是带有'N'或'的varchar(1) 0'代表假,'Y'或'1'代表真(代码的不同部分在编写时使用一种或另一种约定,但显然他们在阅读时都能识别这两种约定)。
我正在将最初用 Java 编写的系统移植/重写到 Python+Django,并且只有在移植完成后我才能关闭旧系统并“清理”数据库困惑。
我想让模型类中的字段在外部显示为 bool 值,因此当最终更正数据库时,我唯一需要在代码中做的就是将字段更改为普通字段 bool 字段。有没有一种简单的方法可以做到这一点?
请您参考如下方法:
您可以通过子类化 django.db.models.Field 创建您自己的字段类并通过实现 to_python方法例如
from django.db import models
class MyField(models.CharField):
def to_python(self, value):
if value in ('Y', '1'):
return True
if value in ('N', '0'):
return False
raise ValueError
希望这能给你一些见识:)
