Readonly字段在openerp中未保存到数据库?
我正在使用Python和XML来创建一个openerp模块。我已经创建了一个模块,里面有很多字段。除了客户ID字段,其他所有字段都是只读的。当我在客户字段中输入客户ID时,其他字段会自动填充。但是,除了客户ID字段之外,其他字段的值并没有保存到数据库中。
当所有字段都不是只读时,它会保存;而当所有字段都是只读时,它就不会保存。
所以我想要的效果是:
- 当我输入客户ID时,其他字段应该自动填充。
- 除了客户ID字段,其他字段都应该是只读的。
- 点击保存时,所有的值都应该保存到数据库中。
有没有人能告诉我?我该怎么做?
提前谢谢大家!
1 个回答
1
你可以使用一个叫做'状态'的变量,并把你需要的变量设置为只读(readonly=True),这样在特定的'状态'下就不能修改它。然后在你类的创建或写入函数中把状态改成完成(done)。
比如:在下面的代码中,把你的变量替换成client_id。
class collection_details(osv.osv):
_name = "collection.details"
_description = "Collection Details"
_columns={
'state': fields.selection([
('draft', 'Draft Sales Order'),
('done', 'Done'),
], 'Status', readonly=True, invisible=True, track_visibility='onchange',
help="", select=True),
'client_id': fields.char('Client Id',size=64,readonly=True,states={'draft': [('readonly', False)]}),
}
_defaults = {
'state': 'draft',
}
希望这能帮到你。