1

我已经安装了内置的 OpenERP 6.1 模块 crm。

因此,我现在有 res.lead 处于活动状态并且在“销售->机会”中可见。

我想编辑此对象/视图以显示合作伙伴的帐单邮寄地址。

由于我想在 Opportunities 表单上执行此操作,因此已经有一个 partner_id。

复制另一个模块,我这样定义我的新模块:

class crm_lead(osv.osv):
    _name = _inherit = 'crm.lead'
    _columns = {
    'billing_address_id': fields.many2one('res.partner.address', 'Partner Billing Address', domain="[('partner_id','=',partner_id),('type','in',['invoice', 'default'])]"),
    }

我将 update_xml 更改为:

    <record model="ir.ui.view" id="crm_case_form_view_oppor">
        <field name="name">Opportunity form (inherit)</field>
        <field name="model">crm.lead</field>
        <field name="inherit_id" ref="crm.crm_case_form_view_oppor"/>
        <field name="arch" type="xml">
            <data>
                <separator string="Details" position="replace" />
                <field name="description" position="replace">
                    <group colspan="2" col="4">
                        <separator colspan="4" string="Billing" />
                        <field widget="one2many_list" mode="form,tree" name="billing_address_id" colspan="4" nolabel="1" />
                    </group>
                    <group colspan="2" col="4">
                        <separator colspan="4" string="Details" />
                        <field name="description" nolabel="1" colspan="4" />
                    </group>
                </field>
            </data>
        </field>
    </record>

问题是相关对象显示了所有相关字段(正如我猜想的那样)。特别是,它显示了 partner_id 和 company 字段,我想隐藏它们,因为它们应该默认/继承于此机会(或链接的合作伙伴)。

如何隐藏这些字段?我不能简单地添加一堆“相关”字段,因为可能有多个帐单地址。

谢谢您的帮助!


编辑:为了更清楚,一个机会应该只有一个选择的账单地址,从合作伙伴的发票/默认地址中选择。它应该内联显示,以便于编辑。

4

4 回答 4

3

有几种方法可以像这样指定相关字段的视图。您可以像这样使用上下文:

<field 
    name="order_line" 
    colspan="4" 
    nolabel="1"
    context="{'form_view_ref': 'module.view_id', 'tree_view_ref': 'model.view_id'}"/>

您还可以将子记录的整个视图指定为父视图中的子视图,如下所示:

    <!-- <=== order_line is a one2many field -->
    <field name="order_line" colspan="4" nolabel="1">
        <form>
            <field name="qty"/>
            ...
        </form>
        <tree>
            <field name="qty"/>
            ...
        </tree>
    </field>
于 2012-06-21T17:57:03.207 回答
0

好的,我有点困惑,因为您将 one2many 小部件放在 many2one 字段上。

如果要控制 one2many 字段的显示方式,请使用我在其他答案中提到的子视图或上下文方法。

如果您想控制一个 many2one 字段的显示方式,您可能可以使用相关字段从您选择的记录中提取字段,但我对此表示怀疑。只读可能有效,但我认为编辑多个相关字段并能够更改所选记录没有意义。您也许可以将一些功能字段与可让您写回相关记录的存储功能组合在一起,但它似乎真的会让您的用户感到困惑。

于 2012-06-22T00:15:59.330 回答
0

在任何 OE 关系字段上,您可以定义内部视图,如:

  <field name=""  mode="tree,form">
        <!--Internal tree view for your Relation field model-->
        <tree>
        </tree>

        <!--Internal Form view for your Relation field model-->
        <form>
        </form>
  </field>

插件下的示例 1 单击示例 2 单击查看示例

希望对你有帮助,。

于 2012-06-22T04:37:27.497 回答
0

现在,如果你想在你的 m2o 文件上添加特定的细节,那么我们还有一些可选的方法,你必须在def name_get你的关系模型中,namge 看起来像:

name_get(cr, user, ids, context=None)
   Returns the preferred display value (text representation) for the records with 
   the given ids. By default this will be the value of the name column, unless the
   model implements a custom behavior. Can sometimes be seen as the inverse function
   of name_search(), but it is not guaranteed to be.

   Rtype :  list(tuple)
   Return : list of pairs (id,text_repr) for all records with the given ids.

因此,在此方法中,您可以决定要显示关系字段的字符串。 例子

我猜这将部分解决您的问题。

于 2012-06-22T05:12:54.783 回答