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

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

模块交互 在上一章,我们使用继承来修改模块的行为。我们的房地产场景,我们希望更进一步,能够为客户生成发票。...链接模块(Link Module) 此类使用案例的常见方法是创建“链接”模块。我们的案例,该模块依赖estate 和account,包括房产的发票创建逻辑。...不幸的是,没有一种简单的方法可以知道如何在Odoo创建任何给定的对象。大多数时候,有必要查看其模型,以找到所需的字段并提供适当的值。 学习的一个好方法是看看其他模块是如何完成你想做的事情的。...create 方法不接受结果集作为字段值。...将发票行链接到发票的最简单、最有效的方法创建发票包含所有行。为此account.move创建中包含invoice_line_ids字段,这是一个One2many字段

1.6K10

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

依赖(Dependencies) 计算的字段的值通常取决于计算记录其他字段的值。ORM期望开发人员使用修饰符depends()指定计算方法上的依赖项。...每当修改字段的某些依赖项,ORM使用给定的依赖项来触发字段的重新计算 from odoo import api, fields, models class TestComputed(models.Model...提示: create_date 仅在记录创建被填充,因此需要一个回退,防止创建的奔溃 表单和列表视图中添加字段,正如本章目标显示的第二个动画中的一样。...练习--为花园面积和朝向赋值 estate.property模型创建 onchange 方法以便当勾选花园,设置花园面积(10)和朝向(North),未勾选,移除花园面积和朝向值。...始终首选computed field,因为它们也是表单视图上下文之外触发的。永远不要使用onchange将业务逻辑添加到模型

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

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

这些方法(和其它在Model定义的任何方法)可被扩展以添加指定业务逻辑: from odoo import fields, models class TestModel(models.Model):...Python 3, super() 等价于 super(TestModel, self)。当你需要使用一条被修改后的结果集调用父方法,可能需要使用后者。...第一继承机制允许模块通过以下方式修改在另一个模块定义的模型的行为: 向模型添加字段 覆盖模型字段的定义 给模型添加约束 给模型添加方法 重写模型的现有方法 第二种继承机制...odoo,第一种机制最常用。我们的例子,我们希望向现有模型添加一个字段,这意味着我们将使用第一种机制。...这些扩展既可以添加内容,也可以从父视图中删除内容。 扩展视图使用inherit_id字段引用其父视图。

2.2K20

odoo 权限管理学习总结

那么odoo如何区分用户类型以及如何做权限控制的呢?...base.user_root: __system__用户(ID为1的用户,technical admin ) category定义相关数据存储ir_module_category表 添加的group...(2, ID, values) 使用values字典的值更新id值=ID的现有记录 (2, ID) 删除id=ID这条记录(调用unlink方法,删除数据及整个主从数据链接关系) (3, ID) 删除主从数据的链接关系但是不删除这个记录...--略--> 查看效果 注意: 实践发现,通过界面点击,访问一些菜单界面,会在菜单访问URL(参见菜单访问自动生成的URL)自动添加model,...对该字段实现统一的权限控制话,需要在模型定义,为目标字段添加groups属性,如下: selling_price = fields.Float('selling price', digits=(8,

10K20

odoo context上下文用法总结

--此处代码略...--> 说明:'group_by': '分组字段名称' 用于视图对象按钮,传递数据给模型方法 模型设计 #!...> 说明:context属性值的字典的键值如果为模型定义的字段名称,则该字段名称必须以元素的形式,出现在模型对应的视图(即不能是内联视图,比如内联Tree列表),否则会出现类似错误提示...> 用于视图关系字段,传递数据给模型方法 模型设计 #!...为可编辑列表视图字段搜索添加查询过滤条件](odoo 为可编辑列表视图字段搜索添加查询过滤条件.md) 用于记录集,传递数据给模型方法 模型设计 #!...(self, vals_list): # 通过重写模型的create或者write方法,调用该方法前修改上下文,然后方法通过self.env.context获取上下文中的目标key值,进而实现目标需求

2K20

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

最重要的属性为 _name,该属性定义了modelodoo系统的属性。...有两大类领域字段:‘简单’字段--直接存储模型表的原子值,形如Boolean, Float, Char, Text, Date 和Selection, ‘关系型’ 字段--连接相同或者不同模型的记录...给模型表estate_property添加字段 添加以下字段到表 Field Type name Char description Text postcode Char date_availability...required (bool, default: False) 如果为 True, 表示该字段值不能为空。创建记录必须拥有默认值或给定的值。...这些字段有系统管理并且不能写,但是可以读取,如果必要的话: id (Id) model记录的唯一标识 create_date (Datetime) 记录创建日期 create_uid

2.3K30

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

Odoo10 Development Essentials》Chapter5(p106)中介绍了Odoo中分层关系的建立。 代码如下 在上面的代码使用字段来关联上层记录。...简单原理 查询分层结构记录,一般的想到的方法是从根目录开始,对每个子目录进行递归查询.然后才能得出具体的分层结构。...(递归查询文件夹文件) Odoo为了提高层次结构(树状结构)查询效率,每一条层级数据记录添加字段. 假设A是B的上级对象。那么存在这样的逻辑关系。...要找Saleable下的所有子目录即可使用 作为条件 结论: Odoo的实际使用,发现使用parent存储特性的模块主要涉及account, product, stock_location....凡事皆有两面,这种存储特性会在数据库添加多余的字段。其实是以空间换时间。

2.2K80

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

买家可以是任何个人,然而,销售人员必须是房产机构的员工(即odoo用户)。 odoo,有两种我们经常引用的两种模型: res.partner: 一个partner为一个物理实体或者法人实体。...然而,本例,我们希望显示给定地产的报价列表,因此我们将使用one2many概念。 one2many是many2one的反向实现。...我们的练习中就是这样的:报价总是通过房产获得的。 其次,尽管property_id字段是必需的,但我们没有将其包含在视图中。odoo如何知道我们的报价与哪个房产相关?...这就是使用odoo框架的一部分魔力:有时候事情是隐式定义的。...当我们通过one2many字段创建记录,为了方便,会自动填充相应的many2one 添加odoo14\custom\estate\models\estate_property_offer.py #!

4.4K40

何在 Spring Boot 读写数据

何在 Spring Boot 读写数据 2.1 引入依赖包 Spring Boot 应用,只需要打开 pom.xml 加入一个 Spring Data JPA 依赖即可。...如何在 Spring Boot 读写数据 (5)@Basic 指定类变量读取方法到数据库表字段的映射关系。对于没有任何特殊注解的getXxxx()方法,默认带有 @Basic 注解。...如何在 Spring Boot 读写数据 (7)@Transient 类变量注解,表示该变量不是一个到数据库表的字段映射。...,字段默认的命名规则为 “附属类名_附属主键”,:password_id。...(3)@ManyToOne(多对一) 如果我们站在用户的角度来看待用户与部门之间的关系,它们之间就变成了多对一的关系(多个用户隶属于一个部门),在用户实体类 User 上添加如下注解: @ManyToOne

15.8K10

Hibernate学习笔记 多表映射

可以注意到我author字段上应用了ManyToOne注解。...本来也应该有一个应用ManyToOne注解的article字段来表示评论所属的文章,但是为了演示单向的OneToMany映射,所以我故意不添加这个文章属性。...我们文章实体类添加如下一段,对应的Getter省略了: @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) private...使用这种方法建立的底层数据库,和使用ManyToOne是一样的。看一下数据表,就会发现这样建立出来的用户表存在一个外键,指向头像表。...另外需要注意的是,使用多对多映射,不能把级联属性指定为CascadeType.DELETE或者CascadeType.ALL,我们应该不希望删除一篇文章的标签,同时将该标签下的所有文章都删除吧?

1.5K10

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

在上一章已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受的。相反,我们至少应该以逻辑的方式组织各个字段。 视图是带有操作和菜单的XML文件定义的。...我们的estate模块,我们需要以逻辑方式组织字段列表(树)视图中,我们希望显示的不仅仅是名称。 表单视图中,应该对字段进行分组。 搜索视图中,我们必须能够搜索的不仅仅是名称。...练习 -- 添加自定义表单视图 合适的XML文件为estate.property 定义视图 为了避免每次修改视图都重新启动服务器,可以启动服务器添加--dev-xml,以便只刷新页面就可以查看视图修改...筛选器必须具有以下属性之一: domain:将给定domain添加到当前搜索 dontext:添加一些context到当前搜索,使用group_by按给定字段名称对结果分组。...odoo,domain对记录上的条件进行编码:domain是用于选择模型记录子集的条件列表。每个条件都是一个包含字段名、运算符和值的三元组。

3.2K40

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

上一章,我们通过CSV文件添加了数据。当需要添加数据格式简单,用CSV格式还是很方便的,当数据格式更复杂(比如视图架构或者一个邮件模板),我们使用XML格式。...数据文件的内容也是模块安装或者更新按序加载。因此,对CSV文件所做的所有说明对XML文件都适用。...注解: 当程序很注重性能,CSV格式优先于XML格式。这是因为,odoo中加载CSV文件比加载XML文件更快。...Odoo有许多微调方式,但通常第一步是确保: 某些字段有默认值 某些字段只读 当记录重复,某些字段不能被拷贝 我们的房产业务案例,我们希望:: 售价只读(往后将自动填充) 当记录重复,可用日期和售价不能被拷贝...我们看到一些属性,required=True,会影响数据库的表模式。其他属性也将影响视图或提供默认值。 练习 -- 添加一些属性到字段

2.8K30

odoo 开发入门教程系列-QWeb简史

构建列表视图很简单,因为只需要字段列表。表单视图也是如此:尽管使用了一些标记,或,但在设计方面几乎没有什么可做的。...您可能已经熟悉现有的引擎,Jinja(Python)、ERB(Ruby) 或Twig(PHP)。Odoo自带内置引擎:QWeb模板。QWeb是Odoo使用的主要模板引擎。...目标: 本节结束创建一个房产的看板视图 我们的地产应用程序,我们希望添加一个看板视图来显示我们的房产。看板视图是标准的Odoo视图(如表单和列表视图),但其结构更灵活。...在上面的示例字段name被添加到元素,但state它之外。当我们需要字段的值但不想在视图中显示它,可以将其添加到元素之外。...您可能想看看Kanban描述的各种选项。 练习--添加默认分组 使用合适的属性对房产分组,默认按类型分组。你必须阻止拖拽和删除。

2K20

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

约束(Constraints) 上一章介绍了向模型添加一些业务逻辑的能力。我们现在可以将按钮链接到业务代码,但如何防止用户输入错误的数据?...例如,我们的房地产模块,没有什么可以阻止用户设置负预期价格。 odoo提供了两种设置自动验证恒定式的方法:Python约束 and SQL约束。..., ] 练习--添加SQL约束 添加以下约束到对应模型: 房产预期价格必须为正数 房产售价必须为正数 报价必须为正数 房产标签名称和类型名称必须唯一 使用-u estate选项重新启动服务器以查看结果...Python约束定义为用 constrains()修饰的方法,并在记录集上调用。修饰符指定约束涉及哪些字段。当修改这些字段的任何字段,将自动计算约束。...警告 当和浮点数打交道,总是使用odoo.tools.float_utils导入的float_compare() 和float_is_zero()方法 确保每次售价或者预期价格改变,自动触发约束

1.4K20

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

安全-简介 前一章我们已经创建了第一个打算用于存储业务数据的表。odoo这样的一个商业应用,第一个考虑的问题就是谁(Odoo 用户(或者组用户))可以访问数据。...Data Files (CSV) Odoo是一个高度数据驱动的系统。虽然通过Python代码定制行为,但是模块的部分值加载设置的数据。...country_id:id 通过使用外部标识指向国家. name 州的名称 code 州的代码 res.country.state model定义了这三个字段 按约定,导入数据的文件存放在模块的...当数据和安全相关,存放在 security 目录,当数据和视图和action相关,存放在 views 目录....perm_read,perm_write,perm_create,perm_unlink: 分别代表create, read, write 和unlink权限,1表示有访问权限,0-表示无权限 练习 添加访问权限

91320

odoo wizard界面显示带复选框列表及勾选数据获取

TransientModel类扩展Model并重用其所有现有机制,具有以下特殊性: wizard记录不是永久的;它们一定时间后自动从数据库删除。...以下属性皆hasCheckBoxes 为"true"的情况下起作用。 modelName 点击列表复选框,需要访问的模型名称,需要配合modelMethod方法使用,缺一不可。...可选 modelMethod 点击列表复选框,需要调用的模型方法,通过该方法收集列表勾选记录的数据。可选。...以上参数同下文saveSelectionsToSessionStorage 参数可同时共存 如果需要将action绑定到指定模型指定视图的Action,可以ir.actions.act_window定义添加...odoo14\custom\estate\static\src\js\list_renderer.js 注意:之所以将uuid函数定义list_renderer.js,是为了避免因为js顺序加载问题

5.2K60

LINUX useradd命令使用总结

使用 useradd 指令所建立的帐号,实际上是保存在 /etc/passwd 文本文件。...    -K, --key KEY=VALUE           不使用 /etc/login.defs 的默认值    -l, --no-log-init  不要将此用户添加到最近登录和登录失败数据库...    -m, --create-home  创建用户的主目录    -M, --no-create-home       不创建用户的主目录    -N, --no-user-group    不创建同名的组...默认复制目录下所有文件)   /etc/login.defs  Shadow密码套件配置   5.简单使用实例 添加一个普通用户   [root@localhost ~]# useradd moonrong...,指定用户登录的目录为/opt/odoo12,创建一个和用户同名的组,并将用户加到该组,指定用户登录后的shell,默认为/bin/bash。

1K31

Odoo 基础教程系列」第三篇——从 Todo 应用开始(2)

在这篇教程里我们将会了解到 Odoo 模型里的一些其他类型的字段和特殊机制,而我依然会继续带领大家一起完善我们的 Todo 应用,不断地往里面添加一些新的功能特性,让它看起来更丰满也更实用一些。...选择字段 在上一篇教程,我们已经创建好了待办事项的模型,但是只是添加了「描述」和「已完成?」两个字段,这肯定是不能满足我们的需求的。...在上一篇教程我们提到过,在对模型进行改动之后,需要对模块进行升级才能看到变更后的样子,除了从应用列表中找到模块进行升级外,我们还可以命令行Odoo 的启动命令加上参数 -u todo 指定升级...这个需求跟时间有关,并且时间是流动(一直变化)的,所以我们应该要有一个方法在用户每次打开待办事项之前,把这个结果计算好,并且反馈给用户,还好 Odoo 的 ORM 已经为我们实现了相关的机制——计算字段...这篇教程的代码同样会更新我的 GitHub 仓库

1.3K10
领券