Odoo 13 - несколько моделей и меню в одном модуле

Я новичок в odoo и изучаю разработку пользовательского модуля. Пытаюсь разработать приложение для управления контактами для компании и человека. Ниже приведены файлы и структура кода:

#models.py
from odoo import models, fields, api


class company(models.Model):
    _name = 'cs_contact.company'
    _description = 'Model for create company profile.'

    name = fields.Char('Company name', required=True)
    country_id = fields.Many2one('res.country', string='Country', help='Select Country', ondelete='restrict', required=True)
    ho_address = fields.Text('HO address')
    website = fields.Char('Website')
    courier_account = fields.Char('Courier Account')
    email = fields.Char('Email')
    

class person(models.Model):
    _name = 'cs_contact.person'
    _description = 'Model for create person contact.'

    name = fields.Char('Full Name', required=True)
    country_id = fields.Many2one('res.country', string='Country', help='Select Country', ondelete='restrict', required=True)
    email = fields.Char('Email')
    im_id = name = fields.Char('Instant messaging ID (Skype/line)')
    worked_before = fields.Selection([
        ('Yes', 'Yes'),
        ('No', 'No'),
        ], string="Worked Before?")
    how_we_meet = fields.Selection([
        ('Fair', 'Fair'),
        ('Email', 'Email'),
        ('Agent', 'Agent'),
        ], string="How we meet?")
    quantity = fields.Integer(string='Quantity')
    note = fields.Text('Note')

Просмотры выглядят так:

#views.xml
<odoo>
  <data>
    <!-- explicit list view definition -->

    <record model="ir.ui.view" id="cs_contact.list">
      <field name="name">cs_contact list</field>
      <field name="model">cs_contact.person</field>
      <field name="arch" type="xml">
        <tree>
            <field name="name"/>
            <field name="country_id" />
            <field name="email"/>
        </tree>
    </field>      
    </record>

    <record id="view_cs_contactsearch" model="ir.ui.view">                                
      <field name="name">cs_contact list</field>
      <field name="model">cs_contact.person</field>                            
      <field name="arch" type="xml">                                    
        <search string="Search contacts">                                        
          <field name="name"></field>                                        
          <field name="country_id"></field>                                        
          <field name="email"></field>
        </search>

      </field>   

    </record>

  </data>
</odoo>

Меню выглядит так:

#menu.xml
<odoo>
  <act_window  id="action_company" name=" Company Contacts" res_model="cs_contact.company" view_mode="tree,form"  />  

  <menuitem  id="contact_root" name="Contacts" sequence='-1' />
  <menuitem  id="contact_company" name="Company" parent="contact_root" action="action_company" sequence="-1" />

</odoo>

Он работает нормально для контакта с компанией. Теперь я не понимаю, как создать верхнее меню для человека и определить вид. Это тот дизайн, который мне нужен. Я пробовал различные методы из блогов, но не работал. Пожалуйста, помогите мне.


person V.Khakhil    schedule 25.07.2020    source источник


Ответы (1)


Вы добавили country_id в определение cs_contact.person представления, но поле не существует. Удалите его из определения представления или объявите в соответствующей модели.

Чтобы добавить пункт меню Person рядом с пунктом меню Company, вам просто нужно использовать тот же родительский и более высокий порядковый номер, а затем подключить его к соответствующему action.

Пример:

<act_window id="action_person" name="Persons" res_model="cs_contact.person" view_mode="tree,form"/>
<menuitem id="contact_person" name="Person" parent="contact_root" action="action_person" sequence="2"/>
person Kenly    schedule 25.07.2020