首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

odoo 开发入门教程系列-模型和基本字段

模型和基本字段 在上一章末尾,我们创建一个odoo模块。然而,此时它仍然是一个空壳,不允许我们存储任何数据。...odoo框架提供了数据库交互工具 开始练习前,请确保estate模块已被安装,也就是说必须以installed状态出现在Apps列表中,如下 对象关系映射(Object-Relational Mapping...ORM生成一张名为test_model表。...model _name中 . 会被ORM自动化转为_ 。按约定所有的model位于一个名为 models 目录,并且每个mode被定义为一个Python文件。...有两大类领域字段:‘简单’字段--直接存储在模型表中原子值,形如Boolean, Float, Char, Text, Date 和Selection, ‘关系型’ 字段--连接相同或者不同模型记录

2.2K30

odoo 开发入门教程系列-模块交互

Odoo提供了一个开发票模块,因此直接从我们房地产模块创建发票是很简单,也就是说,一旦某个房产设置为“已售出”,就会在Invoicing应用程序中创建发票 一个具体示例: 记账凭证(Account...为此,我们需要在estate_account模块中为创建一个模型,继承estate.property模型。...模块正确目录创建 estate_property.py 文件 _inherit estate.property 模块 重写 action_sold 方法(你可能已经将该方法命名为不同名称了) 以返回...如果没有,请检查是否正确导入了所有Python文件。 如果重写生效,我们可以继续创建发票。不幸是,没有一种简单方法可以知道如何在Odoo中创建任何给定对象。...大多数时候,有必要查看其模型,以找到所需字段并提供适当值。 学习一个好方法是看看其他模块是如何完成你想做事情。例如,销售一个基本流程是从销售订单创建发票。

1.6K10
您找到你想要的搜索结果了吗?
是的
没有找到

odoo 权限管理学习总结

view_type等参数,也就是说会自动访问模块相关模型,如果此时没有对应模型访问权限(至少需要 read权限),那么即便拥有对应菜单访问权限,界面上也看不到对应菜单,笔者尝试过在浏览器中直接通过菜单链接...模型访问权限(Access Rights,表级别) 当模型没有定义任何访问权限时,odoo会认为没有任何用户可以访问数据,并在日志中打印: 2022-12-14 09:01:38,994 32508...,access_test_model,model_test_model,base.group_user,1,0,0,0 id 自定义外部标识,模块中保持唯一,一般命名为 access_模型名称_用户组名称...默认允许记录规则:如果授予模型访问权限(Access Rights),并且没有规则适用于用户操作和模型,则授予访问权限 记录规则保存在ir.rule模型表里,我们通过管理ir_rule表中记录,即可控制记录访问权限...注意:通过为当前视图中目标字段添加groups属性实现权限控制仅作用于当前视图,如果希望当前视图模型(Model)所有视图中,对该字段实现统一权限控制话,需要在模型定义中,为目标字段添加groups

10K20

odoo 开发入门教程系列-约束(Constraints)

约束(Constraints) 上一章介绍了向模型中添加一些业务逻辑能力。我们现在可以将按钮链接到业务代码,但如何防止用户输入错误数据?...例如,在我们房地产模块中,没有什么可以阻止用户设置负预期价格。 odoo提供了两种设置自动验证恒定式方法:Python约束 and SQL约束。...Python约束定义为用 constrains()修饰方法,并在记录集上调用。修饰符指定约束中涉及哪些字段。当修改这些字段任何字段时,将自动计算约束。...警告 当和浮点数打交道时,总是使用从 odoo.tools.float_utils导入float_compare() 和float_is_zero()方法 确保每次售价或者预期价格改变时,自动触发约束...修改odoo14\custom\estate\models\estate_property.py 导入 ValidationError from odoo.exceptions import ValidationError

1.4K20

odoo 开发入门教程系列-安全-简介

odoo为指定用户组用户提供了一个安全数据访问机制。 更多关于安全主题详细信息可以查看 Advanced B: ACL and Record Rules。本章目标是覆盖我们新模块最小安全需求。...Data Files (CSV) Odoo是一个高度数据驱动系统。虽然通过Python代码定制行为,但是模块部分值在加载时设置数据中。...country_id:id 通过使用外部标识指向国家. name 州名称 code 州代码 在 res.country.state model中定义了这三个字段 按约定,导入数据文件存放在模块...当模型没有定义任何访问权限时,odoo会认为没有任何用户可以访问数据,并在日志中打印: 2022-12-14 09:01:38,994 32508 WARNING odoo odoo.modules.loading...这些访问权限通常定义在一个名为ir.model.access.csvCSV文件中。

91220

odoo 开发入门教程系列-继承(Inheritance)

继承(Inheritance) Odoo一个强大方面是它模块化。模块专用于业务需求,但模块也可以相互交互。这对于扩展现有模块功能非常有用。...为此,我们需要向res.users模型添加一个字段,并调整其视图以显示它。 Odoo提供了两种继承机制来以模块方式扩展现有模型。...第一继承机制允许模块通过以下方式修改在另一个模块中定义模型行为: 向模型添加字段 覆盖模型字段定义 给模型添加约束 给模型添加方法 重写模型现有方法 第二种继承机制...(委托)允许将模型每个记录链接到父模型记录,并提供对该父记录字段透明访问。...odoo中,第一种机制最常用。在我们例子中,我们希望向现有模型添加一个字段,这意味着我们将使用第一种机制。

2.2K20

Odoo开发指北 01 初识Odoo

继承开发 Odoo提供了大量现成模块给我们使用,但是某些情况下,我们需要制定符合自己需求功能模块Odoo开发一条黄金准则是——不要修改现有的模块,以免改动后代码与原有模块产生混淆。...因此,odoo提供了继承机制,我们可以选择一个基础模块,然后继承它,在它基础上进行修改、扩展,生成自己模块。...然后使用自己模块:把自己模块路径设置到odoo中,重启odoo让其搜索到自定义模块,即可通过odoo进行安装。...类,定义出模型类会自动与Odoo提供ORM接口匹配,也就是说这些模型类会自动存入sql中。...脚手架 odoo-bin scaffold 命令新建了我们 aaa 应用 …/odoo-bin scaffold aaa 模块开发流程 分析模块模型,得出模型所需字段有哪些,然后定义模型类——

2.3K30

odoo 开发入门教程系列-模型之间关系(Relations Between Models)

模型之间关系(Relations Between Models) 上一章介绍了为包含基本字段模型创建自定义视图。然而,在任何真实业务场景中,我们都需要不止一个模型。此外,模型之间链接是必要。...提示: 别忘记在 __init__.py导入Python模块文件,并在__manifest.py__中添加数据或者访问权限。...例如,我们通过partner_id字段,在测试模型上定义了到res.partner模型链接。...,不必创建动作和菜单 添加offer_ids字段到estate.property 模型极其表单视图 这里有几件重要事情需要注意。...首先,我们不需要所有模型操作或菜单。某些模型只能通过另一个模型访问。在我们练习中就是这样:报价总是通过房产获得。 其次,尽管property_id字段是必需,但我们没有将其包含在视图中。

4.3K40

odoo ORM API学习总结兼orm学习教程

用于多继承模块共享抽象父类,不会在数据库中创建模型表 系统为每个数据库自动实例化每个模型一次。...这些实例表示每个数据库上可用模型,取决于该数据库上安装模块。每个实例实际类都是从创建和继承相应模型Python类构建。...每个模型实例都是一个“记录集(recordset)”,即模型记录有序集合。记录集由 browse(), search()或字段访问等方法返回。记录没有显式表示:单条记录表示为一条记录记录集。...字段访问 记录集提供了一个“Active Record” 接口模型字段可直接作为记录属性直接读取和写入。...and extension) Odoo提供三种不同机制,以模块化方式扩展模型: 从现有模型创建新模型,向副本中添加新信息,但保留原始模块 扩展其他模块中定义模型,替换以前版本 将模型一些字段委派给它包含记录

13.2K10

odoo 为form表单视图添加chatter功能

odoo14\custom\estate\models\estate_property.py 需要继承mail.thread模型,并为需要追踪字段设置tracking属性,并设置属性值为真值 #!...,该模型类型为models.AbstractModel,其定义文件为 odoo14\odoo\addons\mail\models\mail_thread.py,其字段命名均以message_开头...tracking 该属性为True或数字时,打开针对该属性所属字段修改日志--当所属字段内容发生变化时,系统会将该字段变化前后值写入日志中,这个数字大小影响变更日志在日志中排序。...__manifest__.py 配置 odoo14\custom\estate\__manifest__.py 需要配置mail模块依赖,因为mail.thread模型归属该模块 #!...,类型为models.AbstractModel,定义在文件 odoo14\odoo\addons\mail\models\mail_activity.py,其字段命名均以activity_,对应模型定义中

70120

odoo Actions学习总结

包含字段: res_model action触发要显示视图关联模型 views (view_id,view_type)对列表。...使用main而不是current以清除导航面包屑(实际发现,使用current会导致面导航面包屑不断重复,形如 顾客信息/导入记录/顾客信息/导入数据/...)。默认为new。...highlight=do_action#the-action-manager 在数据库window action中,操作有几个不同字段,这些字段应被客户端忽略,主要用于组成view列表 view_mode...所有这些类型都必须在生成views列表中(至少有一个False view_id) view_ids M2M(技术上不是M2M:添加了一个sequence字段,可以只由一个视图类型组成,没有视图id)...中每个未填充类型,追加(False,type) 应用实践举例 在estate模块estate.property模型表单视图中,为Action添加菜单"选取offers",如下: !

2.6K30

ODOO配置文件etcodoo.conf配置详解

1.Dbfilter配置 Odoo是一个多租户系统:一个Odoo系统可以运行并服务于多个数据库实例。它也是高度可定制,定制(从加载模块开始)取决于“当前数据库”。 ...但是,对于没有绑定到数据库未登录用户(门户、网站)来说,这是一个问题:Odoo需要知道应该使用哪个数据库来加载网站页面或执行操作。...如果没有使用多租户,这不是问题,只有一个数据库可以使用,但是如果有多个数据库可以访问,Odoo需要一个规则来知道它应该使用哪一个。 ...** **如果希望Odoo和PostgreSQL在同一台计算机上执行,UNIX套接字是可以,并且在没有提供主机时是默认,但是如果希望Odoo和PostgreSQL在不同计算机上执行,则需要侦听网络接口...表   log_db = False   ;设置模块日志级别,可以是一组module:log_level对, 默认值是“:INFO”(表示所有模块默认日志级别为INFO)   log_handler

6.6K21

odoo 给列表视图添加按钮实现数据文件导入

实践环境 Odoo 14.0-20221212 (Community Edition) 代码实现 模块文件组织结构 说明:为了更好表达本文主题,一些和主题无关文件、代码已略去 odoo14\custom...,如果不添加以下这行代码,不刷新当前页面的情况下,无法重复导入相同文件 self.$('.o_estate_customer_upload .o_input_file'...CustomListController, }), }); viewRegistry.add('estate_customer_tree', CustomListView); }); 说明:如果其它模块列表视图也需要实现类似功能...替换estate_customer_tree为自定义全局唯一值 do_action 为 Widget() 快捷方式(定义在odoo14\odoo\addons\web\static\src\js\core.../documentation/14.0/zh_CN/developer/reference/javascript/qweb.html 模型访问权限配置 odoo14\custom\estate\security

3.4K30

odoo 开发入门教程系列-计算字段和变更(Computed Fields And Onchanges)

计算字段和变更(Computed Fields And Onchanges) 模型之间关系是任何Odoo模块关键组成部分。它们对于任何业务案例建模都是必要。...然而,我们可能需要给定模型字段之间链接。有时,一个字段值是根据其他字段值确定,有时我们希望帮助用户输入数据。...到目前为止,除了类定义和字段声明之外,我们还没有编写任何其他东西。 计算字段(Computed Fields) 参考: 主题关联文档可查阅 Computed Fields....本章目标 在房地产模型中,自动计算总面积和最佳报价 预期效果: 在地产报价模型中,自动计算合法日期且可被更新 在我们房地产模块中,我们定义了生活区和花园区。...在这种情况下,不会从数据库中检索字段值,而是通过调用模型方法来动态计算字段值。 要创建计算字段,请创建字段并将其属性compute设置为方法名称。

3.1K30

ODOO优化层级关系查询效率方法

Odoo10 Development Essentials》Chapter5(p106)中介绍了Odoo中分层关系建立。 代码如下 在上面的代码中。 使用字段来关联上层记录。...使用和字段来进行记录所属层级,当时看书时候对这些代码不是很理解,只是知道这样做能够提高层级关系数据模型查询数据记录效率。...(如递归查询文件夹文件) Odoo中为了提高层次结构(树状结构)查询效率,每一条层级数据记录添加跟字段. 假设A是B上级对象。那么存在这样逻辑关系。...Odoo 应用 我们用Odoo11product模块作为演示 在文件中.看到产品目录(ProductCategory类.15行起)代码 在Odoo11演示数据中,产品目录结构一共有6个 我们查询下数据库中数据...要找Saleable下所有子目录即可使用 作为条件 结论: 在Odoo实际使用中,发现使用parent存储特性模块主要涉及account, product, stock_location.

2.2K80

odoo 开发入门教程系列-一些用户界面

数据文件中内容也是在模块安装或者更新时按序加载。因此,对CSV文件所做所有说明对XML文件都适用。...odoo中,用户接口(action,菜单和视图)大部分是通过创建和组装XML文件中记录来定义。常见模式为 菜单> action > 视图。为了访问记录,用户在几个菜单级中导航。...Odoo有许多微调方式,但通常第一步是确保: 某些字段有默认值 某些字段只读 当记录重复时,某些字段不能被拷贝 在我们房产业务案例中,我们希望:: 售价只读(往后将自动填充) 当记录重复时,可用日期和售价不能被拷贝...参考: 主题相关文档可参考 保留字段名称. odoo为预定义行为保留了一些字段名称。...当需要相关行为时,需要在模型中定义这些保留字段。 练习 -- 添加active字段 添加一个 active 字段到estate.property 模型

2.8K30

Odoo 菜单定义和修改学习总结

> 说明: id 菜单外部ID name 如果不指定name,则: 如果为菜单设置了action,则获取action record定义中name字段值作为菜单name属性值 如果未设置菜单action... groups 逗号分隔res.groups模型外部ID序列,形如groups="group_account_user,group_account_manager...如果外部ID以-为前缀,则从菜单组中移除该ID代表组,注意,如果指定用户组不是在当前模块中定义,需要指定所在模块名称,形如estate.group_estate_property_root_menu...> 说明: parent 指定父级菜单外部ID,如果上级菜单不在当前模块中,则需要指定上级菜单所在模块,形如parent="moduleName.parent_menu_id" 修改菜单 本节要介绍是一种特殊修改方式...>,将其id设置为要隐藏子菜单所在模块名称及id属性值组合,形如:moduleName.source_menu_id,如果新菜单和原有菜单在同一个模块,可以省略moduleName.。

1.3K10

odoo 开发入门教程系列-基本视图

在上一章中已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受。相反,我们至少应该以逻辑方式组织各个字段。 视图是在带有操作和菜单XML文件中定义。...它们是ir.ui.view model实例。 在我们estate模块中,我们需要以逻辑方式组织字段: 在列表(树)视图中,我们希望显示不仅仅是名称。 在表单视图中,应该对字段进行分组。...其最基础版本仅简单列出要在表中显示所有字段(其中每个字段都是一列): <field name="...在<em>odoo</em>中,domain对记录上<em>的</em>条件进行编码:domain是用于选择<em>模型</em>记录子集<em>的</em>条件列表。每个条件都是一个包含<em>字段</em>名、运算符和值<em>的</em>三元组。...如果指定<em>字段</em>满足作用于值<em>的</em>运算符<em>的</em>条件,则记录满足条件。

3.2K40

如何在 Ububtu 18.04 上安装 Odoo 13

,命名为odoo13,用户目录为/opt/odoo13: sudo useradd -m -d /opt/odoo13 -U -r -s /bin/bash odoo13 你可以将这个名字设置成任何你想要设置名字...Python 模块: pip3 install wheel pip3 install -r odoo/requirements.txt 一旦完成,接触环境,输入: deactivate 我们将会创建一个新目录...mkdir /opt/odoo13/odoo-custom-addons 稍后,我们将会将该目录添加到addons_path参数中。这个参数定义了 Odoo 用来搜索模块一个列表。...六、创建一个 System Unit 文件 打开你文本编辑器,并且使用下面的内容创建一个服务单元文件,名为odoo13.service: sudo nano /etc/systemd/system/odoo13...九、改变监听端口 这一步是可选,但是它是一个很好实践操作。 默认情况下,Odoo 服务监听所有网络接口8069端口。

8.7K41

如何在Ubuntu 18.04上安装ODOO管理软件

企业需要稳固工作流程。 如果没有这种协调,效率会飞出大门。 幸运是,您数据中心内有Linux服务器,可以完全帮助您完成工作流程。 怎么样? 借助开源CRM/ERP工具ODOO。...ODOO是销售,服务,运营,财务,营销,开发等一站式服务。 ODOO具有可扩展性,可通过10,000多种应用程序满足您业务需求。 我知道你在想什么:这样服务器软件几乎不可能安装? 不。...安装第一步是创建名为odoo用户。...-venv 使用以下命令激活环境: source odoo11-venv/bin/activate 使用命令通过pip3安装必要Python模块: pip3 install wheel pip3 install...准备启动 安装所有必需应用程序后,您将需要运行ODOO配置选项(创建用户,设置公司等)。 完成后,您ODOO站点即可启动并有助于简化您业务工作流程。

1.6K10
领券