我正在将旧的MS Access数据库转换为基于Django的网站。我已经将数据转换为SQLite数据库,并使用inspectdb
自动生成了模型(效果令人满意)。
似乎MS Access将布尔值存储为-1
的{{1}}和True
的{{1}}。而不是修改数据库(它是表的很多!),我试图将0
子类化,如下所示:
False
当我通过Admin界面查看条目时,这似乎可行(-1值在下拉列表中显示为Yes; 0值显示为No)。
但是(这是问题所在),在修改值并保存时,我只能另存为“否”或“未知”(选择“是”会产生一条消息,提示您未指定任何值)。知道我做错了什么吗?
答案 0 :(得分:2)
您只需要更改BooleanField.to_python
def to_python(self, value):
if value in (True, False):
return bool(value)
if value in ('t', 'True', '1', '-1'):
return True
if value in ('f', 'False', '0'):
return False
raise exceptions.ValidationError(
self.error_messages['invalid'],
code='invalid',
params={'value': value},
)