openerp - 如何根据odoo中的条件隐藏字段?

标签 openerp odoo-8

我为产品创建了几个自定义字段。产品出现在销售、采购、仓库和制造模块中。我想让我的自定义字段只出现在制造模块中并隐藏在其他任何地方。那么如何对不可见属性设置条件。我试过了这并得到错误 Unknown field _name in domain

attrs="{'invisible': [('_name', '!=', 'mrp.bom')]}"

Python文件,
from openerp import fields,models, api

class product_template(models.Model):
    _inherit = "product.template"

    rim_weight = fields.Float(string='Rim Weight(KG)', readonly=True, compute='_compute_one_rim_weight')
    width = fields.Float(string='Width(cm)',default='50')
    length = fields.Float(string='Length(cm)',default='63')
    gsm = fields.Float(string='Gram per square meter(gsm)',default='230')

xml文件,
<record id="product_template_form_view_dis_inherit" model="ir.ui.view">
    <field name="name">product.template.common.form.dis.inherit</field>
    <field name="model">product.template</field>
    <field name="inherit_id" ref="product.product_template_form_view"/>
    <field name="arch" type="xml">
         <xpath expr="//page[@string='Accounting']" position='after'>
            <page string='Cover Page Paper'>
                <group>
                    <field name="width"/>
                    <field name="length"/>
                    <field name="gsm"/>
                    <field name="rim_weight"/>
                </group>
            </page>
         </xpath>
    </field>
</record>

最佳答案

有很多方法可以做到这一点,但是我建议您使用以下选项。

  • 修改现有操作并在其中设置上下文,并基于该上下文在 View 中写入条件。 (请记住,您需要覆盖一个操作,如果您想创建另一个操作,则需要重新定义菜单以将新操作分配给该菜单)。
  • 创建新 View 并在要在其中显示这些字段的模型的操作中设置此 View 引用。在新 View 中,您需要看到这些字段,无需扩展产品模板现有 View 。

  • 然而,第一个解决方案很容易实现,而第二个解决方案很长。

    第一种解决方案的示例:
    <record id="action_name" model="ir.actions.act_window">
        <field name="name">Name</field>
        <field name="res_model">product.template</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
        <field name="context" eval="{'is_manufacturing_model':True}" />
    </record>
    

    然后在 View 中就这样写
    <page string='Cover Page Paper'>
        <group invisible="context.get('is_manufacturing_model',False)">
            <field name="width"/>
            <field name="length"/>
            <field name="gsm"/>
            <field name="rim_weight"/>
        <group>
    </page>
    

    关于openerp - 如何根据odoo中的条件隐藏字段?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37412266/

    相关文章:

    openerp - 如何在qweb报告odoo中获取当前登录用户名

    debugging - 如何正确调试OpenERP/Odoo?

    python - 如果我在 api.onchange 方法中更改字段值,它不会在 View 中更新。为什么?

    openerp - OpenERP 和 Odoo 有什么区别?

    odoo - 停止在 odoo 中的特定模型中创建邮件消息和关注者

    Javascript - 对 parent 的 parent 打电话 super ?

    odoo-8 - 奥杜 : write method is only invoked when updating a model

    xpath - 有条件地隐藏按钮 openerp/odoo

    openerp - 如何隐藏字段取决于条件odoo?

    python - OpenERP 模块 xml ValidateError