在OpenERP
中,当您在 python 中定义一个新的 char 字段并设置False
为默认值时,该字段将NULL
在 db 中设置为,ORM
负责转换。是否ORM
也以相同的方式转换整数类型,还是我应该小心它可能会将其转换为 0 而不是NULL
?
我在哪里可以找到OSV
( OpenERP ORM
) 的即时价值转换规则?
是的,当发出 ORM '.search' 查询时,传入 Python False 以表示数据库空值。ORM 没有“is”运算符,因此您必须查询 ('column', '=', False)。同样,当 '.browse' 返回行时,数据库空值将转换为 Python False。
我相信这是因为 xmlrpc(用于将这些查询发送到您的 OpenERP 服务器)在其“开箱即用”配置中没有任何方法来表示 None/null 值。Xmlrpc 可以配置为允许空值,但 OpenERP 不使用它。
这引发的一个明显问题是可空布尔字段会发生什么,其中 False 是一个有效值?基于个人实验:在创建具有可空布尔字段的行时,如果您传递 Python False,那么数据库最终会包含 false,而不是其他数据类型的 null。我认为没有任何方法可以将此类字段设置为 null:传递 Python None 是行不通的,也不会将默认值设置为 None 并且根本不传递此列。
这是在哪里记录的?我找不到它。
这一切都太疯狂了。欢迎来到奥多!