【发布时间】:2018-11-23 14:26:22
【问题描述】:
我正在将旧的 MS Access 数据库转换为基于 Django 的网站。我已将数据转换为 SQLite 数据库,并使用 inspectdb 自动生成模型(效果与预期一样好)。
似乎 MS Access 将布尔值存储为 -1 的 True 和 0 的 False。而不是修改数据库(它是一个 lot 的表!)我正在尝试继承 models.BooleanField,如下所示:
class MsAccessBooleanField(models.BooleanField):
def from_db_value(self, value, expression, connection):
if value == -1:
return True
if value == 0:
return False
def to_python(self, value):
if value == -1:
return True
if value == 0:
return False
def get_prep_value(self, value):
if value == True:
return -1
if value == False:
return 0
return None
def get_db_prep_value(self, value, connection, prepared=False):
if value == True:
return -1
if value == False:
return 0
return None
当我通过管理界面查看条目时,这似乎有效(-1 值在下拉列表中显示为是;0 值显示为否)。
但是(这是问题所在),在修改值并保存时,我只能另存为 No 或 Unknown(选择 Yes 会产生一条消息,指出未指定任何值)。知道我可能做错了什么吗?
【问题讨论】:
-
您似乎正在覆盖应该用于转换值的方法。
-
对不起,你能解释一下吗?我不应该覆盖哪种方法?
-
什么是很多表?我仍然认为迁移是你最好的选择。
-
49...也许我还是应该进行迁移!
-
@user2672537 你需要一个字符串而不是整数。