最适合小白的Odoo12框架详解(更新完毕!!!有错请指正)

6 篇文章 0 订阅
5 篇文章 1 订阅


前言

做这篇文章主要是给odoo小白提供部署方便,本文为原创,转载或使用请注明出处谢谢!


一、准备工作

1.python安装

现如今Odoo框架越来越成熟,对python的版本也越来越高,故在此需要安装python3.5以上的版本!

官网地址: https://www.python.org/downloads/

2.PyCharm安装

为了统一开发工具,建议选择PyCharm来开发,这样操作数据库会比较方便,这里选择2019的专业版[Professional],这里需要注意的是2019以下的版本对于PostgreSQL数据库不是特别友好。
官网地址: https://www.jetbrains.com/pycharm/download/other.html

3.PostgreSQL数据库安装

因为odoo强集成了postgresql,所以只能用postgresql,不能用其他数据库,odoo所用的数据库集成 ,在开发的时候可以随意增加或删除字段,因此给开发者省去了重构及清库的麻烦。
官网地址: https://www.postgresql.org/download/
具体安装攻略详见我的CSDN:
https://blog.csdn.net/weixin_43464076/article/details/111763557

4.准备Odoo源代码

在官网下载Odoo源代码
官网地址: https://www.odoo.com/zh_CN/page/download
以下是翻译的结果,以及下载步骤:

在这里插入图片描述
这里需要下载最后一个,这个才是源码,其他是exe文件,企业版需要付费所以这里选择社区版。
在这里插入图片描述
这里注意下载的源码解压后是这样的
在这里插入图片描述
为了方便操作就把主目录这一长串的字改成source,方便以后操作!
在这里插入图片描述

5.安装虚拟环境

					pip install virtualenv

6.安装虚拟环境管理包

windows环境:
			pip install virtualenvwrapper-win
其他环境:
			pip install virtualenvwrapper

7.配置虚拟环境安装位置

不配置的话会默认安装在C:\Users\Admin\Envs,以我的电脑为例:
在这里插入图片描述
接下来配置位置
桌面→我的电脑→右键→属性→高级系统设置→环境变量→系统变量或者用户变量里面新建一个WORKON_HOME的变量名[这里推荐系统变量,这样切换另一个电脑账号的时候就不需要再配置]→变量值选择你要安装的目录.
在这里插入图片描述
在这里插入图片描述

8.创建新的虚拟环境

在CMD或者pycharm的Terminal中输入以下代码,注:virtual_name为虚拟环境名称

				mkvirtualenv virtual_name

查看已安装的虚拟环境

						workon

9.安装扩展包

在odoo源码中已经提供好了可能需要的扩展包名称
在odoo.egg-info下的requires.txt
然后只需要将里面的扩展包一一安装就好了。
注意:这里要安装刚刚创建的虚拟环境,因为后期都会在虚拟环境下操作,而且交付代码或者打包的时候不会过多的打包其他所依赖的库,比如爬虫什么的,我们只需打包虚拟环境下所依赖的库即上述库,这样就解决了效率,与空间的问题。
这里最好自己写个脚本安装,直接用文件一次性安装会导致一个包安装失败了,那么安装程序就会停止,这里为了考虑效率,故可以用以下的脚本来安装所有依赖的包

import os

BASE_DIR = os.path.dirname(os.path.abspath(__file__))
filepath = os.path.join(BASE_DIR, 'requirements.txt')   # 这里是你的'requirements.txt路径

with open(filepath, 'r') as fp:
    package = fp.readlines()

err_list = []
for i in package:
    p = i.strip('\n')
try:
# odoo_env2是虚拟环境的名字
        os.system('workon odoo_env2 && pip install {} -i https://pypi.tuna.tsinghua.edu.cn/simple'.format(p))
    except:
        print('安装[{}]包发生错误'.format(p))
        err_list.append(p)

# 安装失败的包自己百度解决,通常情况下把错误信息复制百度即可
print('安装失败的包: ', err_list)

10.选择虚拟环境

  1. 打开PyCharm,点击左上角的File→Setting在这里插入图片描述
  2. 找到 Project Interpreter选项(再左上角可以搜索)→右边的设置→Add
    在这里插入图片描述在这里插入图片描述
  3. 左边第一个→右边第二个点→三个点的方框(浏览)
    在这里插入图片描述
  4. 选择自己的虚拟环境安装路径→打开Script→选择python.exe→选择虚拟环境→配置环境变量→OK
    在这里插入图片描述
    在这里插入图片描述在这里插入图片描述在这里插入图片描述在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

11.创建run.py文件

这里需要解释一下run.py文件其实是source(源码)\setup\odoo文件.在多级目录下,不好方便操作,所以在一级目录()下创建run.py文件然后配置odoo的启动设置,这样也能使odoo框架跑起来,并且在一级目录下好操作!
在这里插入图片描述在这里插入图片描述
run.py文件的代码

 run.py
import os
import sys
__import__('os').environ['TZ'] = 'UTC'  # 这里改时区中国是’Asia/Shanghai’

# 把源码路径加到系统中(源码中的odoo没有这一段)
# LIB_PATH = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'source')
# sys.path.append(LIB_PATH)
sys.path.append(r’path’)  # 这里填你项目中source(源码)的路径

import odoo

if __name__ == "__main__":
    odoo.cli.main()

12.创建addons目录

  1. 在主目录下创建一个addons目录,用于存放app(应用/模块)。

在这里插入图片描述

13.创建一个PostgreSQL超级用户

  1. 在安装完PostgreSQL数据库后→开始→PostgreSQL→pgAdmin
    或者在菜单栏里搜索pgAdmin
    在这里插入图片描述
    在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述

  1. 创建超级管理员
1.创建超级用户
CREATE ROLE 用户名superuser PASSWORD '密码' login;

2.创建用户u1
create role u1 with login password '123456';

login是赋予登录权限,否则是不能登录的

这里是创建超级管理,那么就输入第一条即可
在这里插入图片描述

14.创建odoo-data目录

  1. 这个目录用于存放session信息,以及附件
  2. 这里创建的方式最好在另一个目录创建,与源码的目录分开 例如: 源码在D://odoo//odooProject目录下
    那么我门就创建在其他地方,如D://odoo//odoo-data

二、odoo配置环境

1. 配置config

  1. 创建config目录以及.conf文件:
    在主目录下创建一个config文件夹,在此文件夹中创建一个.conf文件,一般来说简单一点就是odoo.conf文件。

在这里插入图片描述

  1. 配置.conf文件

主要配置说明:

addons_path
1.配置APP(应用/模块)路径,注意两个路径间用英文逗号隔开:
2.第一个路径是源码的addons路径,第二个是自己创建的addons路径

addons_path = D:\odoo\myodoo\source\odoo\addons,D:\odoo\myodoo\addons

admin_passwd
1.Odoo超级管理员(用于创建,还原和备份数据库的操作)

admin_passwd = 123456

data_dir
1.在文件夹中于存放session信息,附件等,不存在则自动创建

data_dir = D:\odoo\odoo-data

在这里插入图片描述

db_name
1.强制指定一个数据库连接(没有该数据库时会创建该数据库)

db_name = myodoo_odoo

db_user
1.刚刚创建数据库的超级管理员名称

db_user = odoo

db_password
1.超级管理员密码

db_password = odoo

db_host
1.数据库地址

db_host = 127.0.0.1

db_port
1.数据库端口

db_port = 5432

db_filter
1.过滤数据库,即查找到有这个字样的数据库名称(正则)

dbfilter = ^myodoo

http-interface
1. 监听HTTP服务的接口地址 0.0.0.0表示可以被所有地址访问

http-interface = 0.0.0.0

http_port
1. HTTP服务的侦听端口 默认8069

http_port = 8069

pg_path
1.选择postgresql数据库路径,导出数据时【可能】需要运行该路径下的Pg_dump

pg_path = E:\python_tool\PostgreSql13.1.1_64\bin

附上代码图:
记得修改里面的参数!
在这里插入图片描述

三、odoo命令

1.创建应用命令

python run.py scaffold app名称 [指定路径] [-t 指定模板]

指定路径是自己创建的addons的路径,不指定会默认创建在主目录上,如下图:
在这里插入图片描述
在这里插入图片描述

2. 启动 Odoo命令

参数解释
-c指定配置文件 配置的.conf文件例如:-c ./config/.conf
-u升级App 在多个App(应用/模块)中,开发的时候只修改了其中一个那么就不需要重新升级所有的App,直须升级修改后的.例如:-u app
–dev=xml只升级修改的视图 与-u原理一样

当然要使用-u 或者 --dev=xml 则必须要与-c一起
例如:

-c ./config/odoo.conf -u app 

再次启动的时候,若只修改了app则可以改成:
然后再重新运行程序,每次都要重新运行

-c ./config/odoo.conf --dev=xml 

若后面只须改动视图,说明都不修改的情况下改成:
重新启动程序,后续修改就只需要刷新页面即可

配置启动命令,不配置的话次次在CMD/Terminal上执行太麻烦了:
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
这里弄完先别关闭!
这里需要注意的是,要保证虚拟环境安装了我们所需要的扩展包,不然运行一些东西的时候会出错!
接着就是配置启动命令,初次启动就不需要输入启动命令的-u或者–dev=xml
同样的在Parameters这个框框加入Odoo的启动命令,记得-c后面加自己配置的.conf
在这里插入图片描述
在这里插入图片描述
配置好后点击OK,现在即可来试着启动odoo框架啦!
在这里插入图片描述
这里是不是不知道用户密码?不要慌,odoo管理员默认的账号和密码分别是admin和admin
在这里插入图片描述

3.启动shell脚本命令

python run.py shell -c 配置文件 [-d 指定数据库]

python run.py shell -c ./config/.conf -d database
注意: 如果配置文件里配置了指定的数据库,则不需要参数`-d database
什么意思呢?就是说在.conf文件中,是直接指定了一个数据,而不是查找有某个字段的数据库再选定.
操作数据库的增删查改都需要命令去实现,所以这时需要进入shell脚本操作
这里选择使用pycharm的Terminal来打开shell脚本
下面是启动成功的案例
在这里插入图片描述

四.配置应用文件(manifest.py)

该文件就在应用目录下:
在这里插入图片描述
该文件打开就报黄,不用理!
该文件是一个python字典。其中每个键指定应用数据单元。其内容如下:

# -*- coding: utf-8 -*-
{
    'name': "other_App",  # 这是应用的名字(必填)

    'summary': """
        Short (1 phrase/line) summary of the module's purpose, used as
        subtitle on modules listing or apps.openerp.com""",

    'description': """
          # 模块的描述
        Long description of module's purpose
    """,

    'author': "My Company",  # 作者的名字
    'website': "http://www.yourcompany.com",  # 作者的网站

    # Categories can be used to filter modules in modules listing
    # Check https://github.com/odoo/odoo/blob/12.0/odoo/addons/base/data/ir_module_category_data.xml
    # for the full list
    'category': 'Uncategorized',
    'version': '0.1',  # 应用的版本号

    # any module necessary for this one to work correctly
    'depends': ['base'],  # 需要继承的模板

    # always loaded
    'data': [  
    #必须保持通过模块安装或更新的数据文件列表。来自模块根目录的路径列表,现价段来说基本是视图文件
        # 'security/ir.model.access.csv',
        'views/views.xml',
        'views/templates.xml',
    ],
    # only loaded in demonstration mode
    'demo': [  # 仅在演示模式下安装或更新的数据文件列表
        'demo/demo.xml',
    ],
}

更多介绍请看官网: https://alanhou.org/odoo-13-module-manifests/

五.模型

1.Odoo的三种模型

  1. 一般模型(models.Model):

    映射到数据库中的表

  2. 瞬态模型(models.TransientModel):

    存于数据,但会被定期清理,通常用于向导

  3. 抽象模型(models.AbstractModel):

    不存储数据,不会在数据库创建表。 抽象模型作为可重用的功能集,利用Odoo的继承功能,混入到其他模型。通常用于定义接口或者用作报表模型

2.模型属性

属性解释
_name模型名称
_inheritPython继承的模型(‘model.inherit’ or [‘model.inherit’])
_inherits委托继承
_rec_name用来指出引用关联字描述记录的字段
_order当浏览模型记录或者显示在列表视图时,设置默认顺序。
_description模型的非正式名称,当用户界面显示模型时,一个方便用户的模型记录标题。

3.模型字段

源码/odoo/fields.py

字段解释
Char单行文本
Text多行文本
Selection下拉单选
Htmlhtml富文本
Integer整型
Float浮点型
Monetary货币型
Date日期型
Datetime日期+时间型
Boolean布尔型
Binary二进制文件类型
Many2one多对一
One2many一对多
Many2many多对多

4.字段属性

源码/odoo/fields.py

属性解释
string字段名称(str)
default默认值
help帮助提示内容(str)
readonly是否为只读(boolean)
required是否为必填(boolean)
index是否为索引字段(boolean)
copy是否为允许复制(boolean)
related关联字段, 表示本字段引用关联表中的某字段。
groups定义可操作的用户组(str)
domain用于关联字段记录的过滤
store是否存入数据库 默认为True
compute用于创建一个默认记录给指定字段,不可编辑,store默认为False
inverse操作compute的默认记录,反向操作给depends绑定的字段,且compute操作后的记录还是操作前的记录
related关联字段, 表示本字段引用关联表中的某字段
groups用户组,定义可操作的用户组(str)
ondeleteset null: 当b中删除记录时,modelA中相关记录的a=null ; ; ; cascade: 当b中删除记录时,modelA中相关记录也全部删除 ; ; ;restrict: 当b中删除记录时,如果modelA中存在对应记录,则无法操作 b 的删除;;;;;;;;;;;;;;;;;;;;;\;;;;;; ; 如果Many2one字段中没有设置ondelete属性,则默认为set null

domain属性的详细操作步骤与说明:

	用于该字段能够选择的时候用。

此处为多对一的例子:
表示该字段与模型phonemodel.model建立多对一的关系
在这里插入图片描述

在这里插入图片描述

而添加domain属性后,下拉选择框只出现过滤后的字段:
在这里插入图片描述
在这里插入图片描述

ompute属性的详细操作步骤与说明:

在这里插入图片描述
在这里插入图片描述
这里说明一下self的意思:
大概意思就是这个数据表的所有有效记录.

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
inverse属性的详细操作步骤与说明:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5.模型之间的关系

字段解释
Many2one (多对一)many2one_b_id = fields.Many2one(‘关联模型的_name’)
One2many (一对多)one2many_a_ids = fields.One2many(‘关联模型的_name’,’关联模型的字段名’)
Many2many (多对多)many2many = fields.Many2many(‘关联模型的_name’)

6.模型书写的路径与配置

在安装的App目录下的models目录下的models.py文件下编写模型
在这里插入图片描述
当然为了以后的开发我们只须在models目录下创建一个.py文件,起名为你创建模型的类别,因为以后一个应用下有用户、管理员或者商品类等模型,那么我们就可以把这三个模型,分类,可以写成3个py文件而原本的models.py文件是可以删除的。
那么创建完之后需要在models目录下的__init__.py文件配置模型,不然不起作用。配置如下:

from . import 模型
若你的模型是user.py那么配置就是 from . import user 后面的.py不需要加上

在这里插入图片描述

7.模型的书写

在这里插入图片描述
写完模型记得在__init__导入,这个很重要!!!
在这里插入图片描述

  1. 如果是创建的文件一定不要省略最基本的导入,自动创建会自动存在这一个语句:
from odoo import models, fields, api
  1. 每个模型必须写成一个类,一般继承models.Model,这样才能使模型映射到数据库上
  2. 创建类的名称,使用大驼峰命名
  3. __ name为映射到数据库的名称,但是若有.的话,数据库显示是 _,用上图做例子:
    fruit_fruit_model
    后期操作(还是按照.的形式而不是_(sql语句与ir.model.access.csv用_)
    这里说一下比较好的模型名称书写:
    a.与class名字基本一致
    例如:
    class FruitModel()
    那么_name为:fruit.model
    b.例如上图test.test.model这个名字:
    第一个fruit指创建的应用,fruit与model指你命名的名称,单词之间用.连接,不要用_这是odoo的规范。
    这样的好处就是方便知道这个模型在那个应用,而且在用界面浏览的时候也能方便浏览到属于这个应用的模型

8.显示模型字段

当我们在模型之间设置多对一,一对多,多对多时,通常选择以及显示时会显示模型名称+id的形式,那样不便于我们选择及观看,故可以给他们规定一些字段来显示。

_rec_name规定使用模型的字段值显示

注意这个字段是要在被绑定关系的一方进行设置(被选择)
这个例子为多对一,水果绑定了水果类型,水果类型属于被绑定
在这里插入图片描述

在这里插入图片描述

9.自定义字段

当然也可以样式字段来显示(详见odoo源码中的models.py,1573行)
在这里插入图片描述
重写源码中的name_get方法:
在这里插入图片描述
当然想在odoo中安装应用则需要写视图来让改应用暴露出来安装

10.模型中的ORM操作

当在系统手动CURD(增删查改)模型的字段时候可以让写一些判断,让系统做一些处理反馈给系统或者自动修改一些字段存入数据库:

  • 这里需要注意,这些方法在是默认存在的,但想在创建CURD的方法且自定义一些判断就得重写此类方法,这时要使用相应的装饰器修饰,才能起效果。
装饰器解释
@api.model模型层装饰器
@api.multi记录集装饰器
@api.onchange监控前端页面某个字段的变化
@api.depends计算依赖
@api.constrains约束,只支持简单字段,不支持关联字段

六、视图

构建完模型后需要写相应的视图让应用暴露出来安装模型才有效!
Odoo的视图文件不同于前端,它有自己的视图体系名为qweb格式为xml而不是html。
odoo的后台视图的主要组成部分:

视图名解释
menu(菜单)显示该应用的主要模块体系
form(表单)创建、编辑、展示数据模型所用视图
tree(列表)创建、编辑、展示数据模型时使用
action(动作窗口)提供后台的点击窗口,展示action对应id的视图
search(搜索)制定视图右上角对于当前数据模型的可搜索字段与可用过滤器

目录结构:
templates.xml与views.xml都是模板文件,提示我们该怎么书写视图,而里面的内容都是全部都注释了的,可以不用管,自己在views目录下新建.xml文件然后配置就行了。
在这里插入图片描述

1.menu(菜单)视图

菜单常见属性:

属性解释
name菜单显示名称
id菜单id
action视图窗口动作
parent父级菜单(除了一级菜单)id
web_icon图标(一级菜单)
sequence菜单排序(小→大)

这里我习惯在views下创建一个menu.xml文件来书写菜单

在这里插入图片描述
基本结构:
在这里插入图片描述

  1. 一级菜单
    除了parent属性 其他都可以设置。
    一级菜单部分属性解释:
    action属性:
    写上某视图对应的action的id,这里的作用为类似html的首页,点进app就是先显示该页面,该属性看需求书写
    sequence属性:
    通常一级菜单只有一个可以不用排序
    web_icon属性:
    web_icon = “fruit,static/description/phone.png”
    test_app为模块
    后面的是图片路径,根据源码的书写统一都是在app下的这个路径存放
    注意:
    这里的模块和路径必须要用英文逗号隔开!

在这里插入图片描述

  1. 二级菜单
    相比一级菜单而言二级菜单就不需要写web_icon,其他基本都要写,除了该菜单下还有三级菜单时action属性不用写.
    二级菜单部分属性解释:
    action属性:
    若该菜单有三级菜单可以不用设置,否则在菜单栏上不会出现该菜单名
    parent属性:
    与上级菜单绑定,二级菜单的上级为一级菜单id
    sequence属性:
    菜单升序
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述
  2. 三级菜单
    该菜单是附着二级菜单里面的。
    属性与二级菜单相似,唯一不同的是parent属性是绑定二级菜单的id
    在这里插入图片描述
    在这里插入图片描述
    当然还有四级菜单等…

2.form视图

form视图就是提供一个表单给你填写信息
我们需要在views下创建一个xml文件
这里我的命名规则是:模型文件+model+具体模型名称+view
在这里插入图片描述
页面基本结构如下:
黄色方框内的不许变动,红色方框内的是要显示的模型字段
1、第一个field的name="name"标签是网页的名字
2、第二个field的name="model"标签是模型的名字
在这里插入图片描述
白色方框为分组显示,后面会提到,这里别漏了group,否则在打开form表单时字段名称会不见且只有横线,如图
在这里插入图片描述
加了group标签后:
在这里插入图片描述

3.tree视图

如果是同一个模型的话就可以在同一个xml文件写,这样为了方便我们日后的修改。
tree视图与From的结构类似主要就是form标签的变换
如下图:

在这里插入图片描述

3.action窗口动作

终于到最关键的视图编写了,写了该视图那么应用安装就能显示在主页上了。
与tree视图同个道理,同一个模型下可写在同一个界面
主要结构如下:
第一处红色部分id必须要与menu的action一样,否则会报错
第二处红色部分就是进去将要需要展示的页面 可以是tree的id也可以是form的id,一般有form与tree视图,就展示tree视图
在这里插入图片描述
整个menu视图文件代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
    <!--  一级菜单  -->
    <menuitem id="menu_fruit_app_root"
              name="水果"
              web_icon="fruit_app,static/description/icon.png"
    />
    <!--      二级菜单-->
    <menuitem id="menu_fruit_app_model_fruit_model"
              name="水果模型"
              parent="menu_fruit_app_root"
              action="fruit_app_fruit_model_action"
              sequence="1"
    />
    <!--  三级菜单  -->

    <!--  四级菜单  -->
</odoo>

整个模型视图文件代码如下:

<?xml version="1.0" encoding="UTF-8" ?>
<odoo>
    <record model="ir.ui.view" id="fruit_model_form">
        <field name="name">水果模型</field>
        <field name="model">fruit.fruit.model</field>
        <field name="arch" type="xml">
            <form>
                <sheet>
	                <group>
	                    <field name="name"/>
	                    <field name="fruit_model_id"/>
	                </group>
                </sheet>
            </form>
        </field>
    </record>

    <record model="ir.ui.view" id="fruit_model_tree">
        <field name="name">水果模型</field>
        <field name="model">fruit.fruit.model</field>
        <field name="arch" type="xml">
            <tree>
                <field name="name"/>
                <field name="fruit_model_id"/>
            </tree>
        </field>
    </record>

    <record model="ir.actions.act_window" id="fruit_app_fruit_model_action">
        <field name="name">水果模型</field>
        <field name="res_model">fruit.fruit.model</field>
        <field name="view_type">form</field>
        <field name="view_mode">tree,form</field>
        <field name="view_id" eval="fruit_model_tree"/>
    </record>

</odoo>

这里需要注意的是

七、安装APP

那么现在就可以安装APP了
第一步:
在该应用下的__manifest__.py文件
在这里插入图片描述
添加写好的menu.xml,与视图xml文件 ,将其余两个.xml注释掉,这两个文件是创建应用自带的,里面只有默认的注释所以不需要运行
这里需要注意:必须将menu放在所有视图文件的下面,假若有action视图动作,menu在上面会报错提示找不到该动作。
在这里插入图片描述

然后运行odoo框架,点击apps
在这里插入图片描述
搜索自己的应用,点击安装即可,注意我们在一级菜单上写的web_icon就是该应用的显示图标!!!
在这里插入图片描述
这时安装完了之后再主页面没有显示我们刚刚安装的应用图标。在这里插入图片描述
那是因为,我们需要添加权限!
只有我们添加权限之后才能看到我们的应用。
那么我们就需要打开
在这里插入图片描述
这里系统会默认添加一条数据 告知我们怎么写 ,只需要改动就行了
在这里插入图片描述
红色框内的内容改为所创建的模型,注意我们命名的模型是.二这里需要改为_黄色方框是不能变动,最后的数字是权限控制.
在这里插入图片描述

我们添加完之后还得将在该应用下的__manifest__.py文件把data里面的.csv文件注释放开,然后重启odoo。
在这里插入图片描述

然后再升级APPS应用内升级即可
在这里插入图片描述


总结

odoo框架入门并不难,难的是要理解里面的系统逻辑以及需要结合源码自定义开发的模块。

  • 21
    点赞
  • 126
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 6
    评论
1 ERP 简介 1 1.1 Odoo 历史 1 1.2 ERPⅡ 或商业智能化 2 1.2.1 什么是商业智能 4 2 Odoo 框架简介 7 2.1 python 模块分析 8 2.2 python2 还是 python3 8 3 Odoo 的安装和配置 9 3.1 PostgreSQL 数据库 10 3.2 Ubuntu14.04 下可能缺失的软件包 11 3.3 网页显示 node.js 方面 11 3.4 其他问题 12 3.5 通过命令行运行时的配置 12 3.5.1 –xmlrpc-port=8888 12 3.5.2 –addons-path=addons 12 3.5.3 数据库的一些配置 13 3.5.4 –save 13 3.6 将安装环境封装起来 13 3.7 文档编译 14 4 初入 Odoo 17 4.1 管理数据库 17 4.2 登录界面 18 4.3 Administrator 首选项 19 4.4 导入一个翻译 20 4.5 新的 Demo 用户 20 4.6 模块管理 21 4.7 修改公司信息 21 4.8 打开技术特性支持之后 22 4.9 进销存和财务系统的抽象讨论 22 4.9.1 以采购部门为例 23 4.10 安装和配置模块 24 5 创建自己的模块 27 5.1 快速生成模块骨架 27 5.1.1 python 模块的 init 文件 28 5.1.2 作为 Odoo 模块的说明文件 29 5.2 安装自定义模块 32 5.2.1 模块文件夹管理 32 5.3 一个简单的演示模块 33 5.3.1 controllers 33 5.3.2 views 33 5.3.3 models 35 5.3.4 security 37 5.3.5 美化网页 38 5.4 加分项: 通过 pgadmin3 来查看数据库 39 5.4.1 安装 39 5.4.2 连接服务器 39 5.4.3 图形化查询 40 6 Odoo 开发基础: 假模块第一谈 43 6.1 纯理论讨论 43 6.2 定义模型 45 6.3 加入菜单 46 6.3.1 act_window 的属性 48 6.3.2 menuitem 的属性 48 6.4 视图优化 48 6.4.1 修改 tree 视图 49 6.4.2 修改 form 视图 49 6.5 完整的 views.xml 51 6.6 给模块加个图标 53 7 Odoo 开发基础: 工作计划模块第一谈 55 7.1 数据访问权限管理 61 7.1.1 access rule 62 7.1.2 record rule 62 8 扩展现有模块-继承机制 65 8.1 给模块增加 field 65 8.2 修改已有的 field 66 8.3 重载原模型的方法 66 8.3.1 什么是 Recordset 67 8.3.2 Odoo 里面的 domain 语法 68 8.3.3 recordset 的 search 方法 69 8.4 视图 xml 文件的继承式修改 70 8.4.1 视图元素添加 71 8.4.2 原视图元素属性修改 71 8.5 多态继承 72 8.6 修改其他数据文件 73 8.6.1 删除记录 73 8.6.2 更新数据 73 8.7 委托继承 74 9 理解模型内的数据文件 75 9.1 理解外部 id 75 9.2 使用外部 id 77 9.3 导出或导入数据文件 77 9.4 快捷输入标签 78 9.5 用 field 标签设置值 78 9.5.1 eval 语法 78 9.5.2 ref 属性 79 9.5.3 One2many 和 Many2many 的 eval 赋值 79 10 Odoo 开发基础: 假模块第二谈 81 10.1 本例涉及到的数据库表格简介 89 10.2 工作流概念入门 89 10.2.1 定义工作流对象 90 10.2.2 创建节点 91 10.2.3 创建连接 91 11 Odoo 模型层详解 93 11.1 _name 93 11.2 各个表头属性 93 11.3 name 字段 94 11.4 具体模型的数据 94 11.5 模型间的关系 95 11.6 工作流 95 12 Odoo 视图层详解 97 13 附录 99 13.1 Odoo 里老的 API 99 13.2 PostgreSQL 数据库命令行操作 99 13.2.1 命令行数据库备份 99 13.3 反向代理 (reverse proxy) 99 13.3.1 安装 ngnix 软件 100 13.3.2 强制 https 连接 102 13.3.3 nginx 优化 102 13.3.4 轮询机制 102 13.4 跟踪项目源码初始化进程 102 13.4.1 base 模块 104 13.4.2 web 模块 105 13.4.3 web_kanban 模块 105 13.5 配置会计科目 105 13.5.1 配置会计科目类型 105 13.5.2 配置会计科目 106 13.6 分录 106 13.7 新建业务伙伴 106 13.7.1 新建业务伙伴标签 106 13.7.2 新建客户 106 13.8 创建新的产品 107 13.9 设置会计年度 107 13.10向供应商下单 107 13.11会计学入门 107 13.11.1财务报表 108 13.11.2原始凭证 108 13.11.3账户 108 13.11.4分类帐 109 13.11.5会计科目表 109 13.11.6报告期间 110 13.12参考资料 110
Odoo 是一个开源的企业资源计划(ERP)系统,它提供了一套完整的商业应用程序,包括销售、采购、库存管理、生产管理、财务管理、人力资源管理等。下面是 Odoo 的系统架构详解: 1. 前端:Odoo 使用了基于 Web 技术的前端框架,提供了直观、用户友好的界面。前端部分主要负责与用户交互,并将用户输入的数据发送给后端进行处理。 2. Web 服务器:Odoo 支持多种 Web 服务器,如 Nginx、Apache 等。Web 服务器主要负责接收用户求,并将求转发给 Odoo 服务器进行处理。 3. Odoo 服务器:Odoo 服务器是整个系统的核心组件,它负责处理用户求,并根据求的类型进行相应的操作。Odoo 服务器采用了模块化的架构,每个功能模块都可以独立安装、升级和卸载。 4. 数据库:Odoo 使用关系型数据库来存储数据,常用的数据库包括 PostgreSQL、MySQL 等。所有的数据都存储在数据库中,包括用户信息、产品信息、订单信息等。 5. 模块:Odoo 的功能被组织成多个模块,每个模块负责一个特定的功能领域。例如,销售模块负责管理销售流程,采购模块负责管理采购流程等。用户可以根据自己的需求选择安装相应的模块。 6. 业务逻辑:Odoo 的每个模块都包含了一套完整的业务逻辑。例如,在销售模块中,用户可以创建销售订单、确认订单、生成发票等。这些业务逻辑被封装在模块中,并通过 Odoo 服务器进行处理。 7. API:Odoo 提供了一组丰富的 API,使开发人员能够通过编程的方式来与系统进行交互。开发人员可以使用 API 创建新的模块、扩展现有模块的功能,或者与其他系统进行集成。 总结来说,Odoo 的系统架构包括前端、Web 服务器、Odoo 服务器、数据库、模块、业务逻辑和 API。它提供了一个灵活、可扩展的平台,满足企业各种不同的业务需求。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Pierce°ღ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值