odoo14学习速记笔记

odoo14学习速记笔记

误差月7分40秒

/model/ model.py

这个就是让odoo在数据库中创建一张表。__name就是数据库中创建的表单名, 然后用model.fields模块定义一些字段。也可以继承其它模块的字段。 并且通过@api语法糖,可以监听字段数据的变化,执行一些函数。

_name

  1. 用作该类的唯一标识,在xml文件中会用到对应起来
  2. 类中的_name 命名方式为 _name=模块名.任意字符,中间用点间隔 。
    如模块名(即目录名)为 weather ,其中py文件的类名为 skyCloud。那么_name="weather.sky",开头那个字符一定要和模块名对应,点号后面的无所谓。
  3. _name参数不允许出现驼峰式命令,如_name="weatherSky"

_description

用于给开发者看该模块的用途,没其它什么作用。

_order

排序,_oder=“字段名 排序方式, 字段名2 排序方式…”
排序方式有正向 反向排列(英文)
desc 和 asc

_inherit

继承某个模块中的类,这样就能继承它的字段。
_iinherit="res.company",或_inherit = ['portal.mixin', 'mail.thread'].
就是继承了res模块中的conpany这个类,这样就能使用它里面的字段。

类中的子函数

@api.xxx函数的触发方式

api.onchange(''id')表示該id表示的元素改变时,就触发下面的函数

class app_grid(models.Model):
    _name = "app.grid"
    _description = "九宫格"
    _order = 'sequence asc'
    _check_worflow_auto = True  # 是否添加工作流
    _inherit = ['portal.mixin', 'mail.thread']
    
    @api.onchange('model_id')
    def onchange_model_id(self):
        if self.model_id:
            self.models = self.model_id.model

@api.depends("字段名") ,用来监听字段,字段值一变就会触发函数
@api.model用于与数据库记录无关的逻辑方法,不返回数据(这个可能不可信,命名写了return)。
大佬把doContractInfo这个函数卸载xml文件的class中的。后续可以研究下
在这里插入图片描述

compute计算字段

```

/controllers

用于处理前端的请求,实际使用一般是用来调用第三方接口并返回数,使调用接口后的数据在前端页面显示。

比如页面返回的json数据,显示失败、成功等都是这里处理的

/security/ ir.model.access.csv

注意:每建立一个模块都需要在此文件中添加为该模块添加权限,主要时models_id的命名规则

models_id

  1. 命名规则为 model_模块名_模块文件中的类名,与_name不同,是以下划线风格。
  2. 指向数据库,数据库不存在会报错。(应该是创建脚手架时,数据库一起建立好的)

group_id:id

这个开发时一般都用 base.group_user

最后四个字段

对应 读 些 创建 删除
1为允许
0为不允许

/views

  1. 元素 menuitem可以单独创建一个文件,注意不要忘记在manifest.py中引用

/views/xx.xml

  1. 整个xml文件中,最先显示的放在最底下,如menuitem,按照显示顺序一次排序,最后显示的就放最顶上,manifest文件中的data也是同理。。另外可以为menuitem元素单独创建一个文件。
  2. id不能使用点间隔,间隔符使用下划线.因为点的前面是代表模块名
  3. 一个菜单写道一个xml文件中,不然后续调试会找不到跳转到哪里
  4. 下面的格式是定死的,tree上面几个元素的name都不要动
  5. id名字可以随便起
  6. model : 示例中的ri.ui.view是odoo自带的视图方式,表示使用了其视图方式
  7. 第一个field 中的值表示当前的模块页面的名字,也可以不写。
  8. 第二个field中的值对应当前数据库中的字段,也就是_name的值
  9. 第三个field中的值 表示加载的是哪种视图,可以使用tree,form,不知道为什么这里些的1
  10. 第四个field局势带有视图功能了。
<record id="tree_res_device" model="ir.ui.view">
	<field name="name">res.device.tree</field>
    <field name="model">res.device</field>
    <field name="priority">1</field>
    <field name="arch" type="xml">
        <tree string="列表">
            <field name="name"/>
            <field name="platform"/>
            <field name="brand"/>
            <field name="model"/>
            <field name="guid"/>
            <field name="user_id"/>
        </tree>
    </field>
</record>
  1. 常见的试图有 tree form kanban calendar日历 graph gantt甘特图 pivot透视表 actiyity活动,可以同时输入多个视图,以逗号间隔。
    其中actiyity活动是企业版才有的

  2. 元素div 等只能在form里面写,不能卸载tree或record里面。form中可以添加group sheet div h1 h2等元素,其它地方并

  3. field字段有个ref属性,里面添加元素id。用来点击跳转到另一个record中,展示另一个record中的字段内容。

<record id="idea_category_list2" model="ir.ui.view">
    <field name="name">id.category.list2</field>
    <field name="model">idea.category</field>
    <field name="inherit_id" ref="id_category_list"/>
    <field name="arch" type="xml">
        <!-- find field description and add the field
             idea_ids after it -->
        <xpath expr="//field[@name='description']" position="after">
          <field name="idea_ids" string="Number of ideas"/>
        </xpath>
    </field>
</record>
  1. 不要用pycharm快捷键ctrl+/来注释xml中的代码,会报错
  2. 字段表
知识块	知识点	描述
字段类型	fields.Char	文本
				fields.Text	长文本
				fields.Integar	整数
				fields.Float	浮点
				fields.date	日期
				fields.Boolean	布尔值
关系类型	fields.One2many	一对多
				fields.Many2one	多对一
				fields.Many2many	多对多
				fields.Selection	选择项
继承	_inherit = 'res.partner'	函数的继承
		<field name="inherit_id" ref="base.view_partner_form"/>	视图的继承
视图	tree视图	列表
		form视图	表单
		kanban视图	看板
		xml元素布局	
		domain	domain=['|', ('teacher', '=', True), ('category_id.name', 'ilike', "Teacher")]	数据筛选

/data

用于存放初始化时用的数据,比如本来存放在/security目录中用于设置字段访问权限的xml文件,对于那些初始化就要设计访问权限的字段,可以放到/data里面

模块的更新

每次编辑完模块都要重启服务,然后在网上上更新模块。
更新后i如果报错,仔细从下往上查看报错代码,一般会显示问题位置。

多级菜单的问题

父级菜单没有写action属性,没有跳转,程序会查找它的子菜单,如果子菜单有action属性,网页上打开该模块,显示的就是那里面action的视图。
顶层的menuitem

<!-- Top menu item -->

    <menuitem name="demo1" id="demo1.menu_root"/>

    <!-- menu categories -->

    <menuitem name="Menu 1" id="demo1.menu_1" parent="demo1.menu_root"/>
    <menuitem name="Menu 2" id="demo1.menu_2" parent="demo1.menu_root"/>

    <!-- actions -->

    <menuitem name="List" id="demo1.menu_1_list" parent="demo1.menu_1"
              action="demo1.action_window"/>
    <menuitem name="Server to list" id="demo1" parent="demo1.menu_2"
              action="demo1.action_server"/>

抽象模型

学习步骤i

  1. 学习建立表单视图
  2. 学习建立一对多,多对一的关系
  3. 学习类的继承

pycharm快捷键

格式化代码 ctrl+alt+L
通过包含关键字代码的文件和内容 find in path ctrl+shift+F
搜索文件 双击shift

many2one

ondelet属性

包是这段关系触发删除事件的时候操作

odoo账号的创建和密码设置

  1. odoo的login界面使用 admin登陆,密码默认也是admin。
  2. 点击画面中的setting进入账号管理界面,双击添加账号。
  3. 在选中账号后,上方的action中,有i改密码的选项

bug记录

  1. 更新模块后,主页面不出现模块图标。但是修改manifest文件里面的那么,app页面的图标可以更改。
    解决方案就是更换浏览器
  • 0
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值