【问题标题】:OpenERP / Odoo using domain for many2one in xml viewOpenERP / Odoo 在 xml 视图中为 many2one 使用域
【发布时间】:2015-03-04 14:45:34
【问题描述】:

我尝试根据 many2one 关系中的字段为字段设置不可见属性:

事实上,我有一个模型 M1,其中包含一个字段 option 和一个字段 m2_id,这是一个与模型 M2 的 m2o 关系,其中包含一个字段类别(一个选择字段具有值 val1/val2)

M1:选项(文本),m2_id(many2one)

M2:类别(选择)

我的目的是根据 m2.category 的值显示/隐藏字段 option

通常这必须有效:

<field name="m2_id" />
<field name="option" attrs="{'invisible': [('m2_id.category','=','val1')]}" />

但这会产生运行时错误:

Error: unknown field m2_id.category in domain [["m2_id.category","=","val1"]]

我尝试这样直接设置属性:

<field name="option" invisible="[('m2_id.category','=','val1')]" />

但它需要一个值而不是表达式。所以,它一直被认为是True

请问有什么想法或建议吗?

【问题讨论】:

    标签: odoo odoo-8


    【解决方案1】:

    您可以为其创建相关字段,然后在属性上添加字段,然后它将正常工作。

    例如:

    'category': fields.related('m2_id', 'category', type="char", relation='target_table_name', readonly=True, string="Category"),
    

    现在像在xml中使用

    <field name="m2_id" />
    <field name="category" invisible="1"/>
    <field name="option" attrs="{'invisible': [('category','=','val1')]}" />
    

    【讨论】:

    • 感谢您的回答。此方法的一个小问题是该字段是从服务器端计算的,因此它需要调用 m2_id on_change 函数来更新字段类别,这与每次 m2_id 字段自动(从客户端)刷新的域的行为不同变了..
    • 是的,您只需在工作完成后对 m2_id 进行 on_change 并返回带有类别的值即可。
    • 没错,我就是这么做的。但是我发现不使用域很奇怪。谢谢你的帮助。 --对于任何有用的目的,on_change函数的实现(不是最好的方法)def onchange_func(self, cr, uid, ids, m2_id, context): if m2_id: for obj in self.pool.get('model.m2').browse(cr, uid, [m2_id], context): return { 'value': { 'category': obj.category } } return { 'value': { 'category': '' } }
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-04-19
    • 1970-01-01
    • 2016-05-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多