odoo 学习

环境问题

psycopg2-binary==2.9.9

python-ldap==3.4.0

gevent==22.10.2

环境问题。 最后使用的是conda环境
python odoo-bin -c odoo.conf -i base

  • 使用了conda环境
  • 执行命令:python odoo-bin -c odoo.conf -i base

开发顺序

  1. 打开视图
  2. 添加菜单
  3. 自定义表单
  4. 自定义树
  5. 自定义脚手架安装

开发者模式

  • 进入开发者模式:?debug=1

修改配置

  • 修改配置文件添加addons
  • 重新启动Odoo:./odoo-bin -c ./odoorc.ini
  • 刷新本地模块列表

脚手架安装

  • 使用脚手架安装模块:../odoo-bin scaffold my_module addons

模块

  • 模块用于设计应用和数据的集合
  • 模块文件说明:
    1. __init__.py:这是一个空文件,用于标识模块所在的文件夹是一个Python包。
    2. __manifest__.py:模块的清单文件,包括模块的标题、描述以及要加载的数据文件等信息。
    3. controllers/controllers.py:控制器文件,
    4. 作用:定义模块的Web控制器,处理HTTP请求和路由。
    5. demo/demo.xml:演示数据文件,包含上述示例模型的演示记录。这里定义了模块的演示数据。
    6. models/models.py:模型文件,包含模型及其字段的示例。这里定义了模块的数据模型。
    7. security/ir.model.access.csv:访问控制列表数据文件,定义了哪些用户组可以访问模块中的数据。
    8. views/templates.xml:模板文件,
    9. 作用:定义模块的用户界面视图,包括树视图、表单视图、搜索视图等。
    10. menus.xml
    11. 定义模块的菜单结构,包括导航菜单、子菜单、操作按钮等。您可以在此文件中创建菜单项,指定菜单的名称、图标、访问权限以及与之关联的视图或操作

关于字段

  • One2many字段命名:用_ids结尾
  • Many2many字段命名:用ids结尾

多记录方法 和 1tm mt1 mtm

  • 多记录方法:适用于同时处理多个记录的情况
many2one

定义 Many2one 字段除了需要指明关联的模型外,还有一个参数叫 ondelete,它指明了「当关联的用户删除后」当前的模型应该做什么操作。ondelete 主要有以下几个值:

  • set null当用关联用户删除后,user_id 字段设置为空。
  • restrict限制关联的用户删除,当用户被删除时会提示报错。
  • cascade级联删除,当用户删除时,将关联的 categroy数据删除。 ⚠️ 使用这种模式时要严格考虑数据的重要性,最好不要随便使用

class Department(models.Model):
    _name = 'company.department'
    
    name = fields.Char(string='Name')  # 部门名称
    manager_id = fields.Many2one('res.users', string='Manager') 
    # 部门经理(多对一,关联模型为res.users)
    employee_ids = fields.One2many('company.employee', 'department_id', string='Employees') 
    # 部门员工(一对多,关联模型为company.employee,关联字段为department_id)

class Employee(models.Model):
    _name = 'company.employee'
    
    name = fields.Char(string='Name')  # 员工姓名
    department_id = fields.Many2one('company.department', string='Department')  
    # 所属部门(多对一,关联模型为company.department)

mtm
class Author(models.Model):
    _name = 'library.author'
    
    name = fields.Char(string='Name')

class Book(models.Model):
    _name = 'library.book'

    name = fields.Char(string='Title')
    author_ids = fields.Many2many('library.author', 'book_author_rel', string='Authors', relation='library_book_author_rel')
    # 第一个参数为对应的关联 关联模型  ,第二个参数为他们两个的中间表明 如果不写,则默认是两个表名后接_rel
    • 这对于需要在多个记录上执行相同操作的情况非常有用。

计算字段

  • 通过装饰器@api.depends指定计算字段所依赖的字段
  • compute参数用于指定计算字段的计算方法
  1. compute 参数
    • compute 是一个字段的参数,用于指定计算字段的计算方法。
    • 当你在模型中定义一个计算字段时,你需要指定一个方法,该方法将在每次需要计算该字段的值时被调用。
    • 这个方法通常被称为“计算方法”或“计算函数”。
  1. 计算字段
    • 计算字段是一种特殊类型的字段,它的值不是直接存储在数据库中,而是根据其他字段的值动态计算得出的。
    • 你可以使用 compute 参数来定义计算字段,并指定一个方法来计算该字段的值。
  1. 示例
    • 在你提供的代码中,current 字段是一个计算字段。它的值不是直接从数据库中获取的,而是通过 _compute_current 方法计算得出的。
    • 每当涉及到 current 字段的值时,Odoo 将自动调用 _compute_current 方法来计算该值。

调试填入的形参:

-c odoo.conf --dev=all --log-level=info
 

示例代码解释

from odoo import models, fields, api

class Bangumi(models.Model):
    _name = 'bangumi.bangumi'
    _description = 'Bangumi'

我们的模型类的类属性定义了,_name 和 _description 分别是这个模型类的名称和描述。

定义 _name 是要遵守一个不成文的规定,格式一般为 {addon_name}.{model_name} 其中 addon_name 为你的应用或模块的名字,model_name 为模型的名字,例如: project 模块中的 Project 模型的 _name 为 project.project,hr 模块中 LeaveReport 则为 hr.leave.report,以上均参考至官方应用中的模型。

  • 解释了示例代码中的字段含义和参数

访问数据库管理界面

  • 访问地址:http://localhost:8067/web/database/manager

manifest.py 文件

  • 描述了addon的基本信息,如名称、描述、作者等

控制器(controllers)

  • 用于编写Web控制器

Demo数据(demo)

  • 存放模块安装后的初始化演示数据

数据模型(models)

  • 用于编写ORM数据模型

权限定义(security)

  • 存放权限定义文件

视图定义(views)

  • 存放模块的视图定义文件

交互式shell模式

  • 启动命令:./odoo-bin shell -c ./odoo.conf
  • 保存: env.cr.commit()

Many2one字段

  • 用法示例:关联到Odoo的用户模型res.users
  • 参数ondelete指明了关联模型删除后当前模型的操作方式

模块升级

  • 使用参数-u在启动时升级模块

Required属性

  • required属性用于指示字段是否为必需字段

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值