将数据传递给many2one小部件

时间:2015-07-28 13:37:33

标签: openerp odoo odoo-8 openerp-8

我有一个具有以下简单数据结构的自定义模块:

class Site(models.Model):
    _name = 'sites.site'

    site_name = fields.Char(string="Site Name")
     contact_in_site_role_ids = fields.One2many(comodel_name="sites.contact_in_site_role", inverse_name="site_id", string="Site Contacts", required=False, )


class SiteRole(models.Model):
    _name = "sites.site_role"
    role_name = fields.Char(string="Role Name")


class ContactInSiteRole(models.Model):
    _name = "sites.contact_in_site_role"

    site_id = fields.Many2one("sites.site",string="Site")
    contact_id = fields.Many2one("res.partner",string="Contact")
    role_id = fields.Many2one("sites.site_role",string="Site Role")
    role_detail = fields.Char(string="Role details")

目前通过以下表格进行管理:

      <record model="ir.ui.view" id="site_form_view">
            <field name="name">site.form</field>
            <field name="model">sites.site</field>
            <field name="arch" type="xml">
                <form string="Site Form">
                    <sheet>
                        <group>
                            <field name="site_name"/>
                        </group>
                        <notebook>
                            <page string="Site Contacts">
                                <field name="contact_in_site_role_ids" widget="one2many_list">
                                        <tree>
                                            <field name="contact_id"/>
                                            <field name="role_id"/>
                                            <field name="role_detail"/>
                                        </tree>
                                </field>
                            </page>
                        </notebook>
                    </sheet>
                </form>
            </field>
        </record>

这很有效,除了在“编辑网站表单”上单击以在Many2One小部件上添加联系人时,它再次提示该网站。如何从此弹出窗体中删除“站点”选项,并从父窗体传递相关站点:

Screenshot

1 个答案:

答案 0 :(得分:4)

尝试通过以下方式查看

<field name="contact_in_site_role_ids" widget="one2many_list" context="{'default_site_id':parent.id}"/>

这里的概念是我们可以通过在上下文中传递它们来初始化子元素值,如:

{default_child_field: value}