如何避免在 OpenERP 7 中以自定义形式显示字段?

Posted

技术标签:

【中文标题】如何避免在 OpenERP 7 中以自定义形式显示字段?【英文标题】:How to avoid showing fields in a customized form in OpenERP7? 【发布时间】:2014-10-21 11:29:08 【问题描述】:

我正在使用 OpenERP7,并且我在表单中创建了一个字段。该字段是下一个:

'history': fields.function(_get_history, type='many2many',
                           obj="res.partner.link.category",
                           method=True, string='Categories'),

然后,我在表格中显示它。由于该字段是 many2many,因此它显示为树,我在下面指定。

<group string="Activity Summary">
    <field name="history" nolabel="1" attrs="'readonly': 1">
        <tree string="Categories">
            <field name="active_category" attrs="'readonly': 1"/>
            <field name="link_category_id" attrs="'readonly': 1"/>
            <field name="type" attrs="'readonly': 1"/>
            <field name="date" attrs="'readonly': 1"/>
            <field name="observations"/>
            <button name="open_history" type="object" string="View history" icon="terp-calendar"/>
        </tree>
    </field>
</group>

一切正常,但是,如果我单击其中一条记录,它会在弹出窗口中作为表单打开,并且显示一些我不想要的字段。例如,“res.partner.link.category”的对象具有属性 partner_id,我不想显示它。所以我没有把它写在树里面(这很好用),但我对表单做了同样的事情,这个显示了“res.partner.link.category”的每个属性。这里是我为显示我想要的表单所做的修改后的代码:

<group string="Activity Summary">
    <field name="history" nolabel="1" attrs="'readonly': 1">
        <tree string="Categories">
            <field name="active_category" attrs="'readonly': 1"/>
            <field name="link_category_id" attrs="'readonly': 1"/>
            <field name="type" attrs="'readonly': 1"/>
            <field name="date" attrs="'readonly': 1"/>
            <field name="observations"/>
            <button name="open_history" type="object" string="View history" icon="terp-calendar"/>
        </tree>
        <form string="Categories" version="7.0">
            <sheet>
                <group col="4">
                    <field name="active_category"/>
                    <field name="link_category_id" options="'no_open': True"/>
                    <field name="type"/>
                    <field name="partner_id" attrs="'invisible': True"/>
                </group>
                <group col="4">
                    <field name="date"/>
                    <field name="observations"/>
                </group>
            </sheet>
        </form>
    </field>
</group>

我做错了什么?有什么办法可以解决吗?

【问题讨论】:

您想隐藏many2many 视图的一些字段/列?在many2many 默认显示在列表/树视图中定义的所有列。 例如,我不能在树中显示 6 列,在表单中显示 3 列,可以吗? 【参考方案1】:

你必须继承它并用历史替换它

试试这个,

<record id="form_id" model="ir.ui.view">
            <field name="name">model.form</field>
            <field name="model">model</field>
            <field name="inherit_id" ref="module_to_inherit.view id"/>
            <field name="arch" type="xml">
                <field name="partner_id" position="replace">
                    <field name="history"/>
                </field>
            </field>
</record>

【讨论】:

以上是关于如何避免在 OpenERP 7 中以自定义形式显示字段?的主要内容,如果未能解决你的问题,请参考以下文章

如何从 csv 文件中以自定义格式读取时间?

在打字稿中以自引用方式键入对象

以自定义形式使用 Django 时间/日期小部件

在 drupal 中以内容类型形式显示自定义表字段值

Openerp 7 openerp-server.conf 自定义 addons_path

以自定义帖子类型显示标签面板