odoo学习之security, menu, tree, form

security

在ir.model.access.csv中

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink

可以设置成

access_org_info,org.info,model_org_info,,1,1,1,1

其中:access_org_info:access_为固定开头,org_info为模块名称
org.info:为定义的模型文件里面model的_name字段
model_org_info:model_为固定开头,org_info为model的_name字段,但是要把 . 改成 _
base.group_user:可以不填
1,1,1,1 代表之前四个字段的权限
注:要在__manifest__.py中,把ir.model.access.csv注释打开,权限才生效

menu

创建菜单视图

  1. 在view中定义一个menutem.xml文件
<odoo>
    <menuitem name="组织中心" id="org.menu_root"/>
    <menuitem name="部门管理" id="menu_1" parent="org.menu_root" action="department_action"/>
</odoo>
  • menuitem标签:为创建菜单的标签
  • name属性:就是在菜单显示的内容
  • id属性:id标识,这里是唯一的即可
  • parent属性:父级,我们在下面定义parent就可以将下面的子菜单定位在id为org.menu_root的页面中了
  • action属性:动作,必须制定到对于的act_windows视图上,没有指定则页面不会显示这个菜单功能
  1. 在view中定义一个department.xml文件
<odoo>
    <record id="department_action" model="ir.actions.act_window" >
        <field name="name">部门管理</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">org.department</field>
        <field name="view_mode">tree,form</field>
    </record>
</odoo>
  • record标签:语法标准,必须要写在最外面
  • id属性:id标识,这里是唯一的即可
  • model属性:xml会继承IrActionsActWindow的动作模型,odoo会根据模型来渲染视图,我们每一个view都要设置一个基础的act_windows视图
  • field->name=“name”:定义页面的左上角显示内容
  • field->name=“type”:类型
  • field->name=“res_model”:act_windows对应渲染的模型,这里写上我们之前定义的org.department模型即可
  • field->name=“view_mode”:需要渲染的类型,这里先定义tree视图和form视图
  1. 在_manifest_.py中加载刚创建的两个视图
 # 加载的视图
    'data': [
        '....',
        'views/department.xml',
        'views/menutem.xml',
    ],

注意:注意顺序,菜单视图一定要放在最后,act_windows视图放在菜单视图的上面
4)进入security->ir.model.access.csv文件中替换下面代码

id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink
access_org_department,org.department,model_org_department,,1,1,1,1
  • id: 唯一标识,必须唯一
  • name: 描述名称,描述信息
  • model_id:id:model的id格式是 model_模型类名
  • group_id:id : group组的id,这里可以不填,或者写上自己的定义的用户组
  • perm_read:查看 1有权限,0无权限,下面的一样的
  • perm_write:修改
  • perm_create: 创建
  • perm_unlink: 删除

并在data中打开对应的权限文件的屏蔽

 # 加载的视图
    'data': [
       'security/ir.model.access.csv',
        'views/department.xml',
        'views/menutem.xml',
    ],

5)最后,进入应用找到自己的模块去升级

tree
  1. 创建act_window
    在views文件夹中创建member.xml文件
<odoo>
    <record id="member_action" model="ir.actions.act_window">
        <field name="name">成员管理</field>
        <field name="type">ir.actions.act_window</field>
        <field name="res_model">org.member</field>
        <field name="view_mode">tree</field>
    </record>
</odoo>

2)把menutem.xml文件改成

<odoo>
    <menuitem name="组织中心" id="org.menu_root"/>
    <menuitem name="部门管理" id="menu_1" parent="org.menu_root" action="department_action"/>
    <menuitem name="成员管理" id="menu_2" parent="org.menu_root" action="member_action"/>
</odoo>

3)并在_manifest_.py中加载刚创建视图

 # 加载的视图
    'data': [
        '....',
        'security/ir.model.access.csv',
        'views/department.xml',
        'views/member.xml',
        'views/menutem.xml',
    ],

4)最后升级模块

创建tree视图代码

1)在member.xml文件中添加代码

    <record id="member_view_tree" model="ir.ui.view">
      <field name="name">成员管理列表</field>
      <field name="model">org.member</field>
      <field name="arch" type="xml">
        <tree>
          <field name="name"/>
          <field name="phone" />
          <field name="duty" />
          <field name="role_id" />
          <field name="department_id" />
        </tree>
      </field>
    </record>

在record中大部分都是固定写法,在tree标签中写上对应的字段名称即可
注:
模型名称 模型名称一定要一致并且不能写错,因为odoo会根据Model的对应到对应的view视图
tree标签,这是tree视图的标志,不可以少
tree标签中的field,name等于值和数据库的字段名要一致才能正确渲染
2)修改security权限
3)升级模块

form

什么是from视图

  • from视图即表单视图
  • 我们可以理解为对tree列表修改,创建的时候的视图展示样式
  • tree视图创建之后会自动创建一个对应的from视图,但是我们如果想要排版或者对自己进行一些操作那么就需要自己来自定义from视图了
创建form视图

之前已经创建了tree视图,现在需要加入form视图需要修改两个地方

  1. 修改views文件中member.xml文件act_window的view_mode的地方,添加from
    在这里插入图片描述

2)添加form视图内容

    <record id="member_view_form" model="ir.ui.view">
      <field name="name">member_view_form</field>
      <field name="model">org.member</field>
      <field name="arch" type="xml">
        <form string="members_form">
          <sheet>
            <group>
              <field name="name"/>
              <field name="phone"/>
              <field name="duty"/>
              <field name="role_id"/>
              <field name="department_id"/>
            </group>
          </sheet>
        </form>
      </field>
    </record>

注:model的地方也一定要也正确
from里面是组的概念所以一定要使用group组来包着field字段

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值