Odoo 13 - 同一模块中的多个模型和菜单

Odoo 13 - multiple model and menus in same module

我是 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>

公司联系人工作正常。现在我不知道如何为人员创建顶级菜单并定义视图。 This is the the design I want。我尝试了博客中的各种方法,但没有用。请帮帮我。

您已在 cs_contact.person 视图定义中添加了 country_id,但该字段不存在。将其从视图定义中移除或在相应模型中声明。

要在 Company 菜单项旁边添加 Person 菜单项,您只需使用相同的父级和更高的序列号,然后将其连接到相应的 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"/>