在odoo中动态填充引用字段

问题描述 投票:1回答:2

我想根据另一个字段(类别)动态填充引用字段(ref),这可能吗?

openerp odoo odoo-8 openerp-8
2个回答
0
投票

您可以使用onchange(): -

“onchange”机制为客户端接口提供了一种方法,只要用户填写了字段中的值,就可以更新表单,而无需向数据库保存任何内容。

例如,假设模型有三个字段金额,unit_price和price,并且您希望在修改任何其他字段时更新表单上的价格。要实现这一点,请定义一个方法,其中self表示表单视图中的记录,并使用onchange()对其进行修饰,以指定必须触发哪个字段。您对自己所做的任何更改都将反映在表单上。

<!-- content of form view -->
<field name="amount"/>
<field name="unit_price"/>
<field name="price" readonly="1"/>

# onchange handler
@api.onchange('amount', 'unit_price')
def _onchange_price(self):
    # set auto-changing field
    self.price = self.amount * self.unit_price
    # Can optionally return a warning and domains
    return {
        'warning': {
            'title': "Something bad happened",
            'message': "It was very bad indeed",
        }
    }

希望这有帮助。


0
投票

您可以通过提供refmodel_name来填充record_id,如下所示:

@api.onchange("template_id")
def _onchange_template_id(self):
    if self.template_id:
        self.ref = "{},{}".format(self.env.context["active_model"],  
                                  self.env.context["active_id"])

要填充下拉列表,您需要返回元组[(model_name, record_id), ...]的列表。

© www.soinside.com 2019 - 2024. All rights reserved.