Readonly字段在openerp中未保存到数据库?

1 投票
1 回答
1670 浏览
提问于 2025-04-18 03:45

我正在使用Python和XML来创建一个openerp模块。我已经创建了一个模块,里面有很多字段。除了客户ID字段,其他所有字段都是只读的。当我在客户字段中输入客户ID时,其他字段会自动填充。但是,除了客户ID字段之外,其他字段的值并没有保存到数据库中。

当所有字段都不是只读时,它会保存;而当所有字段都是只读时,它就不会保存。

所以我想要的效果是:

  1. 当我输入客户ID时,其他字段应该自动填充。
  2. 除了客户ID字段,其他字段都应该是只读的。
  3. 点击保存时,所有的值都应该保存到数据库中。

有没有人能告诉我?我该怎么做?

提前谢谢大家!

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',
    }

希望这能帮到你。

撰写回答