ODOO的基础知识与环境配置

        1.Odoo是什么?

        Odoo(原名为OpenERP,更早之前则为TinyERP)是一套企业资源规划(ERP)及以客户为中心的客户关系管理(CRM)系统。以Python语言开发,数据库采用开源的PostgreSQL,系统以GNU GPL开源协议发布。

        系统提供较灵活的模块架构,常用模块包括:采购管理、销售管理、库存管理、财务管理、货品管理、营销管理、客户关系管理、生产管理、人事管理及服务支持等等。用户可以直接从模块库中选择安装适用的模块,进行模块卸载、升级的管理操作。Odoo现在有一套完整的业务应用,满足所有的企业业务需求,从网站、电子商务到制造,库存和会计等,所有的领域无缝集成。这是第一次一个软件系统,被设计成能达到这么全面的功能覆盖。

        客户端用户界面是基于GTK的,同时支持Linux和Windows平台。目前还有开发中的基于TurboGears的eTiny Web客户端。

        2.Odoo的环境配置

        在开始环境配置之前,我们可以先了解一下WSL(全称为Windows Subsystem for Linux),官方翻译为“适用于Linux的Windows子系统”。因为程序开发会特别依赖终端命令的开发,而win10下的cmd终端并没有linux那么多的命令和软件扩展。而且作为一个程序员,不管我们是做前端或者是后端,多少都需要对linux环境有一定的了解,因为程序运行的环境就是在linux中,有些功能只有在linux环境下才能实现。

        而WSL的优势就在于,在win10的环境下运行,并不需要特地装一个Linux的系统。并且其唤出终端就可以直接使用linux的命令,相比虚拟机来说会方便许多。最重要的是wsl的学习成本很低。在此处WSL只需要了解即可。

接下来开始正式的环境配置:

第①步 连接WSL

以管理员模式运行Windows powerShell

输入以下代码 启动WSL(Windows subsystem for linux)功能

 输入以下代码启动虚拟机功能

 此时重启电脑以完成WSL的安装及更新。

 接下来还是打开Power Shell,将WSL2设置为默认版本

 现在可以下载Windows terminal和Ubuntu 20.04LTS,在微软商店中即可下载。

 

 下载好后打开Ubuntu控制台就会让你为新的Linux系统创建用户和密码

 接下来用Windows Terminal打开Power shell在其中查看WSL的状态 (wsl --list -v)

 在powershell中启动并进入WSL(wsl)

 在这里输入exit可以从Linux Bash中 logout 并回头PowerShell中

 但此时Linux系统仍然会在后台运行, 需要使用以下代码关闭Linux系统

 此时再查看发现状态由Running变成了Stopped

 点击此处即可再Windows Terminal中连接WSL

第②步 安装postgreSQL

输入sudo apt-get update更新apt工具源,并验证新建Linux用户时的密码

 然后再用apt工具安装postgreSQL

 确认postgreSQL安装成功

启动PostgreSQL服务

 PostgreSQL默认用户为postgres, 但Odoo会禁止以默认用户连接,所以此时我们需要创建一个新的postgreSQL用户,建议与Linux用户同名。

 同时也需要创建一个数据库(需要postgreSQL服务运行),这里我同样同名创建。

下面有一些postgreSQL的常用命令:

查看postgreSQL服务状态:sudo service postgresql status

启动PostgreSQL服务: sudo service postgresql start

停止PostgreSQL服务: sudo service postgresql stop

创建数据库: createdb <数据库名>

连接到数据库: psql <数据库名>

第③步 安装python及其他依赖:

首先检查python版本(版本不够时可以使用“sudo apt install python3” 安装):

安装python开发工具用:sudo apt install python3-pip python3-dev libxml2-dev libxslt1-dev libldap2-dev libsasl2-dev libssl-dev libpq-dev libjpeg-dev

 第④步 下载Odoo源码:

首先我们创建source文件夹并进入,然后从GIthub拉取Odoo源码

 用cd切换到 /src/odoo后安装工具

 设置python虚拟环境并启动

接下来依照odoo文件夹中的requirements.txt安装依赖(此过程耗时较长且可能因为网络等原因中断,如果发生此情况请多试几次)

 依赖安装完毕后,可以在确认PostgreSQL服务已经在运行后(sudo service postgresql status查看服务状态)通过二进制文件运行Odoo, 要注意自己数据库的名字要输入正确(-i base为首次启动初始化数据库, 以后启动不需要)

 成功后可在浏览器中输入http://localhost:8069/进入到登录界面,以默认用户名及密码admin登录。

 到此处Odoo的开发环境就算是配置完成啦!

        3.Odoo的一些基础知识。

        在学习Odoo开发之前,我们需要了解一下Odoo的基础知识。Odoo遵行的是MVC设计模式,我们可以从这个方面入手了解odoo。

                                                首先是odoo模型开发:

odoo模型对象基本分为三种:

odoo.models.Model:常规数据库持久模型,在模块安装或升级的时候会自动在数据库中创建相应的数据表。

odoo.models.TransientModel:临时记录的模型超类,可暂时的持久化,表中数据会定期进行清理。

odoo.models.AbstractModel:抽象模型超类,不会在数据库创建对应表,可为多个Model提供相同属性的统一声明。

odoo模型常用的属性定义有以下几种:

_name:模型唯一的标识,该类非继承父类时必须指定。

_description:模型描述。

_inherit:被继承的模型名称。

_table:模型对应的数据表的名称,默认值是_name的值中将.转换成_(一般无需配置)

_rec_name:在其他模型中引用此模型时显示的字段,默认为name。

_order:排序字段。

                                                然后是view视图的开发:

常用的视图字段有:

name:视图描述,必须配置

model:视图对应的模型名称

arch: 视图布局描述

常用的视图属性:

create: 禁用/启用创建记录,值为ture或false

edit:禁用/启用编辑记录,值为true或false(在form、list、gantt中使用)

delete:禁用/启用删除记录,值为true或false(在form、list中使用)

duplicate:禁用/启用复制记录,值为true或false(在form、list中使用)

import:禁用/启用导入功能,值为true或false(list中使用)

widget:控件类型

 常用的widget类型:

progressbar:进度条,按百分比标签

selection: 下拉选择菜单

radio :单选标签

date: 日期标签

text: 文本标签

checkbox: 复选框标签

url: 网站链接标签

one2many_list: 一对多标签

monetary:金额标签

many2many_binary :文件上传

                                                接下来是Odoo常用的字段类型

        我们可以自己理解一下模型与字段的关系:简单理解为模型由字段组合配置,字段装饰了模型。连接数据库后模型映射为数据库中的表,字段映射为表中的例。

基础字段类型:

char : 单行字符串(限制长度)

text : 多行字符串 (无长度限制)客户端中显示为文本框

Boolean :True /False

integer:封装int

float :fields.Float(string='**',digists=(1,2))   digists属性定义整数部分和小数部分的位数。

Date: 短日期型 包含年月日

Datetime: 时间戳型 包含年月日时分秒

Html: 封装html代码内容

binary :封装二进制内容

selection:枚举类型(下拉列表显示)需要在其中预定义展示的数据

高级字段类型:

reference:引用字段,可以实现让用户自定义要引用的模型和记录。可以通过定义函数来定义字段选择过滤条件。

关系字段类型:

many2one:需要在字段属性中填写关联模型的名称(主键)

one2many:需要在字段属性中填写关联模型的名称(主键)和关联字段(外键)

使用one2many字段时,many2one必须同时使用。

many2many:需要制定关联模型名称,中间表名称,当前关联模型id,需要关联模型的id。 

                       如果没有指定关联表,odoo会自动创建一张关联表,包含两张表的主键字段。

                  格式:  fields.many2many(关联模型名称,中间表名称,当前关联模型id,需要关联模型的id)

保留字段类型:

id:  Integer类型,表主键模型中记录的唯一标识。

create_date: Datetime类型, 记录的创建日期。

create_uid: Many2one类型,记录的创建者。

write_date: Datetime类型, 记录的最后修改日期。

write_uid: Many2one类型, 记录最后修改者。

特殊字段类型:

active: Boolean类型,控制记录是否可见。 (default=False 记录不可见)

name:  Unicode(字符串)类型,显示各种行为。

下面补充一下常用字段的属性:

string : 字符串类型 默认值为字段名,是在视图中显示的字段标签。

required : bool类型 默认值为False, 表示这个字段是否可以为空(设置是否必填作用)。

readonly: bool类型 默认值为False, 表示这个字段是否只读。

help: 字符串类型, 为用户提供帮助提示。

index: bool类型  默认值为False,表示是否在对应数据库列上创建数据库索引。

最后说一下模型中的装饰器:

装饰器: 是指让其他函数不需要做任何代码变动的前提下增加额外功能。

Odoo常用的装饰器:

Model装饰器: @api.model  self仅代表自己 不包含记录信息。

onChange装饰器: @api.onchange('field')  监听某个字段发生改变时,触发对应方法。

Constraints装饰器:   @api.Constraints('field')  约束某些字段(记录修改包含装饰器指定的字段,就会触发对应方法,通常用于字段检验。

Depends装饰器: @api.depends('field') 在函数中,对该字段值进行处理时,如果计算值依赖于其他相关字段,不论是与该字段隶属同一张表的还是其他表的字段,都会触发所编写的字段函数。

总结:

        方法中包含的self不想包含任何记录 使用model装饰器 与self无关

        onchange字段发生监听改变时绑定函数,绑定字段执行相应的方法

        对字段合法性进行校验时使用constraints装饰器进行字段约束。

        虽然 @api.depends 与@api.onchange有诸多相似的地方,但一个重要区别就是 onchange 的侦测字段范围需要在同一个模型或界面上;而depends 可以侦测关联的模型的字段(可以跨不同表)。

以上是本人近期开始学习Odoo整理的一些知识,写的比较杂乱,如有错误的地方请指正。

                                         

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值