Jor*_*zov 11 python postgresql openerp
在我的OpenERP安装中,我有以下字段,之前不需要,但我将所需的参数更改为True.
'fiscal_position': fields.many2one(
'account.fiscal.position',
'Fiscal Position',
required=True,
readonly=True,
states={'draft':[('readonly',False)]}
),
Run Code Online (Sandbox Code Playgroud)
在调试日志中,我看到ORM尝试为数据库中的该字段设置非空约束.
2013-01-04 15:28:56 EET STATEMENT: ALTER TABLE "account_invoice"
ALTER COLUMN "fiscal_position" SET NOT NULL
Run Code Online (Sandbox Code Playgroud)
我怎么能防止这种情况?我的想法是获得所需的True标志,仅用于新记录并且没有NOT NULL约束.在其他情况下发生PostgreSQL完整性错误:
IntegrityError: null value in column "fiscal_position" violates
not-null constraint
Run Code Online (Sandbox Code Playgroud)
那么,我怎样才能在表单视图中有一个必填字段,而不使ORM触及数据库方案约束?或者如何根据对象的状态动态更改所需的字段?
Dan*_*eis 13
要仅在某些状态下创建字段,请将其保留为模型中不需要的字段,并在表单视图中设置要求字段的条件:
<field
name="fiscal_position"
attrs="{'required':[('state','in',['pending','open'])]}"
/>
Run Code Online (Sandbox Code Playgroud)
如果您required=True
在.py
文件中写入,则ORM将向该字段添加非空约束.
有多种方法可以执行代码.
required=True
在.py
文件和该字段设置默认值.required=False
并required=True
投入使用view.xml
.required=False
并设置required=True
在view.xml
为对象的一些状态.这可能有助于解决您的问题.
归档时间: |
|
查看次数: |
8036 次 |
最近记录: |