如何在odoo10中基于复杂条件隐藏场?

时间:2017-06-19 05:46:35

标签: attr odoo-10 invisible

我在account.payment中添加了一个字段。

bank_id = fields.Many2one('res.bank', string="Bank")

当我点击account.invoice中的注册付款按钮时,它会打开一个注册付款向导。

我希望根据条件隐藏bank_id

journal_id.type not in bank

在odoo中怎么可能?

xml中的

我添加了这样的条件。

attrs="{'invisible': [('journal_id.type', 'not in', ['bank'])]}"

如何纠正条件??

1 个答案:

答案 0 :(得分:2)

在这种情况下,您无法应用直接attrs,因此您必须使用一个计算布尔字段来检查日记帐类型,并根据该字段使bank_id可见或不可见

在account.payment

from odoo import models, fields, api, _

class account_payment(models.Model):
     _inherit = "account.payment"

     bank_id = fields.Many2one('res.bank', string="Bank")
     check_journal = fields.Boolean(string="Journal Type", compute='_check_journal_type')

     @api.depends('journal_id')
     def _check_journal_type(self):
         if self.journal_id.type == 'bank':
             self.check_journal = False
         else:
             self.check_journal = True

在account.payment视图中

<field name="check_journal" invisible="1"/>
<field name="bank_id" attrs="{'invisible': [('check_journal', '=', True)]}"/>