在我的 OpenERP 安装中,我有以下字段,以前不需要,但我将所需的参数更改为 True。
'fiscal_position': fields.many2one(
'account.fiscal.position',
'Fiscal Position',
required=True,
readonly=True,
states={'draft':[('readonly',False)]}
),
在调试日志中,我看到 ORM 尝试为数据库中的该字段设置非空约束。
2013-01-04 15:28:56 EET STATEMENT: ALTER TABLE "account_invoice"
ALTER COLUMN "fiscal_position" SET NOT NULL
我怎样才能防止这种情况?我的想法是拥有所需的 True 标志,仅用于新记录并且没有 NOT NULL 约束。在其他情况下,会发生 PostgreSQL 完整性错误:
IntegrityError: null value in column "fiscal_position" violates
not-null constraint
那么,我怎样才能在表单视图中有一个必填字段,而不使 ORM 触及数据库方案约束?或者如何根据对象的状态动态更改所需的字段?