2015-07-28 1 views
1

У меня есть пользовательский модуль со следующей простой структурой данных:передавать данные many2one виджет

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

ответ

3

Попробуйте пройти, как показано ниже, и увидеть

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

Концепции здесь мы можем инициализировать значения дочерних элементов, передав их в контексте:

{default_child_field: value}