Odoo练习初学者

时间:2017-01-17 10:31:09

标签: python xml openerp

这是我的模块。它的安装和加载没有任何错误。

1.需要一些帮助来弄清楚观点有什么问题,因为它们不会出现。 2.如何在标题和左侧的2个子菜单​​中添加菜单。

{
   'name' : "Helloworld",
   'version' : "1.0",
   'description' : 'Helloworld test module',
   'author' : "AP",
   'data' : ['helloworld_view.xml'],
   'installable' : True,
}





from openerp import models, fields



class HelloWorld(models.Model):
    _name = 'helloworld.test'

    name = fields.Char("Name", required=True, size=20 )
    value = fields.Integer("Value",  )

class HelloWorld2(models.Model):
    _name = "helloworld.test2"
    name = fields.Char("Name", required=True)
    reference = fields.Reference("helloworld.test")

这是观点。我试着将它附加到销售菜单现在只是为了检查,但我肯定错过了一些东西。一般来说,当我点击标题菜单时,我希望标题中有Helloworld菜单,左侧有2个子菜单​​Test和Test2

<?xml version="1.0" encoding= "utf-8"?>

<openerp>
   <data>

    <record id= "helloworld_tree_view" model= "ir.ui.view">
     <field name="model">helloworld.test</field >
     <field name="arch" type= "xml">
         <tree>
             <field name="name"/>
             <field name="value"/>
         </tree>
   </field>
   </record>

   <record id= "helloworld_form_view" model= "ir.ui.view">
   <field name="model">helloworld.test</field >
   <field name="arch" type= "xml">
         <form>
            <field name="name"/>
            <field name="value"/>
         </form>
   </field>
   </record>

        <menuitem action= "helloworld_action"
            id="helloworld_menu_action"
            parent="base.menu_sales" sequence= "16" />

    <record id="helloworld_action" model= "ir.actions.act_window" >
            <field name="name" >Test1</field >
            <field name="type" >ir.actions.act_window</field>
            <field name="res_model" >helloworld.test</field >
            <field name="view_mode" >tree,kanban,form</field >
            <field name="view_type" >form</field >
            <field name="help" type= "html">
                <p class="oe_view_nocontent_create" >
                    Helloworld.
                </p>
            </field>
          </record>



   </data>
</openerp>

2 个答案:

答案 0 :(得分:0)

<menuitem>中如果您要给父母,那么该菜单将添加到该菜单下。

要在Header中添加菜单,请创建没有父级的菜单。

在您的情况下,要在Helloworld下添加Test1,您可以尝试如下。

 <menuitem 
            id="helloworld_menu_action"
            sequence= "16" name="Hello World" string="Hello World"/>
 <menuitem action= "helloworld_action"
            id="menu_helloworld_test"
            parent="helloworld_menu_action"
            sequence= "16" />

注意

请在<menuitem>中提供参数操作,如我在示例中所示,否则菜单将无法显示,视图将无法加载。

答案 1 :(得分:0)

我不知道您是如何撰写__openerp__.py的,但是您没有导入您的观点,我确定。

您的视图的所有记录都是在没有名称的情况下编写的(该字段是必填字段,您的代码应该抛出错误)。

如果您修改了__openerp__.py文件,它应该有用(只要您为自己的观点命名)。

{
    'name' : "Helloworld",
    'summary': "Helloworld",
    'version' : "1.0",
    'description' : 'Helloworld test module',
    'author' : "AP",
    'depends': ['base', 'sale'],
    'category': 'Uncategorized',
    'data' : ['helloworld_view.xml'],
    'installable' : True,
}

然后在你的helloworld_view.xml中(确保该文件位于项目的根目录中并且它的名称完全),视图应该是这样的(带有字段名称)设置)

<record id= "helloworld_tree_view" model= "ir.ui.view">
    <field name="name">helloworld.tree.view</field>
    <field name="model">helloworld.test</field >
    <field name="arch" type= "xml">
        <tree>
            <field name="name"/>
            <field name="value"/>
        </tree>
    </field>
</record>

并且不要使用字段。参考。使用fields.Many2one

修改

啊,最后一件事。您应该在操作定义后编写您的menuitem。否则它将找不到它并告诉您外部ID不存在。