阅读 165

odoo基础视图入门学习- tree视图的使用

odoo基础视图入门学习- tree视图的使用

前言

上面的内容我们已经学会了如何去创建odoo的菜单,下面我们要学习的是odoo的基础视图tree视图,我们的目标是实现型号管理的列表页面

image

创建model

之前我们已经学了简单的创建了一个菜单,我们也知道了视图的渲染是离不开model的支持的,我们现在的目标是在型号管理中创建tree视图,那么我们就要先创建型号管理对应的model

电商中都有SPU和SKU的概念,这里我们就以手机为举例,那么一个手机型号就是一个简单的SPU,对应手机的不同的颜色和对应的内存大小等不同的参数所产生的商品那么就是SKU(SKU是物理上不可分割的最小存货单元

  • SPU:iphoneXs

  • Sku:32G, 金色

  • 品牌:苹果

那么我们就可以创建一个简单的model(写在model.py中)

复制代码

class GoodsSpu(models.Model):
    """
    型号表
    """
    _name = "fandx.goods.spu"

    name = fields.Char("商品名称")
    code = fields.Char("商品编号")
    brand_id = fields.Many2one("fandx.brands", "品牌")

    create_date = fields.Datetime("创建时间", default=datetime.now())

odoo的orm方法会在以后的教程中进行讲解,现在我们可以理解为创建了一个数据表

  • 表名:fandx_goods_spu

  • name字段:varChar类型

  • code字段:varChar类型

  • brand_id字段:外键字段,所以这里是int类型

  • create_date字段:datetime类型

创建act_window和menu

在我们创建了model下面的目标就是在页面中去渲染上面的几个字段的数据

既然要渲染数据库,odoo中不管什么视图,都要去创建基础的act_windows视图和menu菜单

  • 在views文件夹中创建goods.xml文件

    复制代码

    <odoo>
        <record id="goods_spu_action" model="ir.actions.act_window">
            <field name="name">型号管理</field>
            <field name="type">ir.actions.act_window</field>
            <field name="res_model">fandx.goods.spu</field>
            <field name="view_mode">tree</field>
        </record></odoo>
  • 注意:

    • res_model要写刚才创建的model的名称

    • view_mode要写上tree视图

  • 修改menuitem菜单中action

    复制代码

    <odoo>
        <menuitem name="FANDX仓库" id="fandx_stock.menu_root"/>
        <menuitem name="品牌管理" id="fandx_stock.menu_1" parent="fandx_stock.menu_root" action="brand_action"/>
        <menuitem name="型号管理" id="fandx_stock.menu_2" parent="fandx_stock.menu_root" action="goods_spu_action"/>
        <menuitem name="SKU管理" id="fandx_stock.menu_3" parent="fandx_stock.menu_root" action="brand_action"/></odoo>

创建tree视图代码

下面就是我们这次的重头戏了创建tree视图代码

  • 继续在goods.xml中在act_window上面添加代码

    复制代码

    <record id="goods_spu_view_tree" model="ir.ui.view">
      <field name="name">型号管理列表</field>
      <field name="model">fandx.goods.spu</field>
      <field name="arch" type="xml">
        <tree>
          <field name="name"/>
          <field name="brand_id" />
          <field name="code" />
          <field name="create_date" />
        </tree>
      </field></record><record id="goods_spu_action" model="ir.actions.act_window">
      <field name="name">型号管理</field>
      <field name="type">ir.actions.act_window</field>
      <field name="res_model">fandx.goods.spu</field>
      <field name="view_mode">tree,form</field></record>
  • 非常简单,在record中大部分都是固定写法,在tree标签中写上对应的字段名称即可

  • 注意点

    • <field name="model">模型名称</field> 模型名称一定要一致并且不能写错,因为odoo会根据Model的对应到对应的view视图

    • tree标签,这是tree视图的标志,不可以少

    • tree标签中的field,name等于值和数据库的字段名要一致才能正确渲染

修改security权限

上面的工作做完,有的小伙伴可以尝试的更新了自己的模块,发现自己的菜单还不见了,odoo中的所有模型在分配之后都会基于权限进行页面渲染,所以这里需要给fandx_goods_spu赋予权限

  • 在security文件夹下的ir.model.access.csv文件添加内容

    复制代码

    ......
    access_fandx_goods_spu,fandx_stock.fandx_goods_spu,model_fandx_goods_spu,base.group_user,1,1,1,

文章来源https://www.cnblogs.com/fandx/p/14661405.html

文章分类
后端
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐