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

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

QWeb简史 到目前为止,我们房地产模块界面设计相当有限。构建列表视图很简单,因为只需要字段列表。...此外,PDF报告或网站页面等其他功能需要另一个更灵活工具:模板引擎。 您可能已经熟悉现有的引擎,如Jinja(Python)、ERB(Ruby) 或Twig(PHP)。...Odoo自带内置引擎:QWeb模板。QWeb是Odoo使用主要模板引擎。它是一个XML模板引擎,主要用于生成HTML片段和页面。 你可能已经在Odoo见过 看板,其中记录以卡片状结构显示。...我们将为我们房地产模块构建这样视图。 一个具体示例: 一个看板视图 参考: 本主题关联文档可以查看Kanban....在上面的示例中,字段name被添加到元素中,但state在它之外。当我们需要字段值但不想在视图中显示它时,可以将其添加到元素之外。

2K20

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

人们可以很容易地想象一个模型包含客户,另一个模型则包含用户列表。你可能需要参考任何现有业务模型上客户或用户。...many2one是指向另一个对象简单链接。...练习2 会用上述提到两种常用model添加买家和销售人员到estate.property模块。将它们添加到form视图中新tab页面。 销售人员默认值必须是当前用户。买家不能被复制。...这意味着可以将多个"tax"添加到我们测试模型。...首先,我们不需要所有模型操作或菜单。某些模型只能通过另一个模型访问。在我们练习中就是这样:报价总是通过房产获得。 其次,尽管property_id字段是必需,但我们没有将其包含在视图中。

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

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

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

2.2K20

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

计算字段和变更(Computed Fields And Onchanges) 模型之间关系是任何Odoo模块关键组成部分。它们对于任何业务案例建模都是必要。...本章目标 在房地产模型中,自动计算总面积和最佳报价 预期效果: 在地产报价模型中,自动计算合法日期且可被更新 在我们房地产模块中,我们定义了生活区和花园区。...每当修改字段某些依赖项时,ORM使用给定依赖项来触发字段重新计算 from odoo import api, fields, models class TestComputed(models.Model...description 当数以百万计记录需要重新计算时,这可能会很快会变得无法承受 还值得注意是,计算字段可以依赖于另一个计算字段。...始终首选computed field,因为它们也是在表单视图上下文之外触发。永远不要使用onchange将业务逻辑添加到模型中。

3.1K30

odoo Actions学习总结

包含字段: res_model action触发要显示视图关联模型 views (view_id,view_type)对列表。...context (可选) 传递给视图附加上下文 domain (可选) 隐式添加到所有视图搜索查询过滤domain limit (可选) 默认情况下要在列表中显示记录数。...,在当前页面中打开estate.customer模块默认列表视图 { 'type': 'ir.actions.act_window', 'name': _('导入数据'), '...highlight=do_action#the-action-manager 在数据库window action中,操作有几个不同字段,这些字段应被客户端忽略,主要用于组成view列表 view_mode...中每个未填充类型,追加(False,type) 应用实践举例 在estate模块estate.property模型表单视图中,为Action添加菜单"选取offers",如下: !

2.6K30

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

Odoo提供了一个开发票模块,因此直接从我们房地产模块创建发票是很简单,也就是说,一旦某个房产设置为“已售出”,就会在Invoicing应用程序中创建发票 一个具体示例: 记账凭证(Account.../14.0/zh_CN/_images/create_inv.gif 每当我们与另一个模块交互时,我们都需要记住模块化。...这是意料之中,因为你模块依赖它。 如果你卸载Invoicing模块,你模块也会被卸载。 说明:__init__.py为空 重启服务,安装模块 创建发票 是时候生成发票了。...不幸是,没有一种简单方法可以知道如何在Odoo中创建任何给定对象。大多数时候,有必要查看其模型,以找到所需字段并提供适当值。 学习一个好方法是看看其他模块是如何完成你想做事情。...为此在account.move创建中包含invoice_line_ids字段,这是一个One2many字段。One2many和Many2many使用通用ORM方法中描述特殊“commands”。

1.6K10

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

虽然可以通过CSV文件加载这样数据,但是使用XML更方便。 类似CSV文件,XML文件也必须按约定添加到合适目录,并在 __manifest__.py中进行定义。...数据文件中内容也是在模块安装或者更新时按序加载。因此,对CSV文件所做所有说明对XML文件都适用。...当数据链接到视图时,我们将它们添加到views文件夹中 本章,我们将通过XML文件加载我们第一个action和菜单。Actions 和菜单为数据库中标准记录。...Odoo有许多微调方式,但通常第一步是确保: 某些字段有默认值 某些字段只读 当记录重复时,某些字段不能被拷贝 在我们房产业务案例中,我们希望:: 售价只读(往后将自动填充) 当记录重复时,可用日期和售价不能被拷贝...参考: 主题相关文档可参考 保留字段名称. odoo为预定义行为保留了一些字段名称。

2.9K30

odoo 权限管理学习总结

-- id:供代码或者xml中引用,model:odoocategory模型--> [房地产]模块菜单权限</field...这意味着添加组规则可以扩展访问,但不能超出全局规则定义范围。 全局规则集和组规则集之间取交集,这意味着添加到给定全局规则集第一个组规则将限制访问。...如果当前用户不在列出组中,他将无权访问该字段: 将自动从请求视图中删除受限制字段 从fields_get()响应中删除受限制字段 尝试(显式)读取或写入受限字段会导致访问错误 修改estate...注意:通过为当前视图中目标字段添加groups属性实现权限控制仅作用于当前视图,如果希望当前视图模型(Model)所有视图中,对该字段实现统一权限控制话,需要在模型定义中,为目标字段添加groups...整个文件夹拷贝odoo14\custom目录下,最后,重启服务并安装该模块

10.1K20

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

模型和基本字段 在上一章末尾,我们创建一个odoo模块。然而,此时它仍然是一个空壳,不允许我们存储任何数据。...在我们房地产模块中,我们希望将与房地产相关信息(名称(name)、描述(description)、价格(price)、居住面积(living area)…)存储在数据库中。...odoo框架提供了数据库交互工具 开始练习前,请确保estate模块已被安装,也就是说必须以installed状态出现在Apps列表中,如下 对象关系映射(Object-Relational Mapping...有些属性是所有字段都拥有的,最常见几个属性如下: string (str, default: 字段名称) UI上显示为字段label (用户可见)....自动创建字段(Automatic Fields) 参考: 该话题相关文档可参考 Automatic fields. odoo会在所有model(当然,也可以配置禁止自动创建某些字段)中创建少数字段

2.3K30

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

通过继承此类来创建Odoo模型: class user(Model): ... 系统将为安装了该类模块每个数据库实例化一次类 _auto= True 是否应该创建数据库表。...Many2many 或者 One2many 字段 related 可以用于引用另一个模型中 One2many 或Many2many 字段,前提是通过当前模型一个Many2one关系来实现。...and extension) Odoo提供三种不同机制,以模块化方式扩展模型: 从现有模型创建新模型,向副本中添加新信息,但保留原始模块 扩展其他模块中定义模型,替换以前版本 将模型一些字段委派给它包含记录...这对于将新字段或方法添加到现有模型(在其他模块中创建)或自定义或重新配置它们(例如更改其默认排序顺序)非常有用: class Extension0(models.Model): _name =...env['extension.0'].func({}) 返回: test b 注意: 如果同时继承抽象模块和非抽象模块,并把_name配置为非抽象模块,抽象模块字段也会添加到非抽象模块对应表 委托(

13.4K10

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

在上一章中已经看到,odoo能够为给定模型生成默认视图。实际上,默认视图对于业务应用程序来说是不可接受。相反,我们至少应该以逻辑方式组织各个字段。 视图是在带有操作和菜单XML文件中定义。...它们是ir.ui.view model实例。 在我们estate模块中,我们需要以逻辑方式组织字段: 在列表(树)视图中,我们希望显示不仅仅是名称。 在表单视图中,应该对字段进行分组。...筛选器必须具有以下属性之一: domain:将给定domain添加到当前搜索 dontext:添加一些context到当前搜索,使用group_by按给定字段名称对结果分组。...在odoo中,domain对记录上条件进行编码:domain是用于选择模型记录子集条件列表。每个条件都是一个包含字段名、运算符和值三元组。...如果指定字段满足作用于值运算符条件,则记录满足条件。

3.2K40

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

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

72520

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

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

2.3K80

Odoo开发指北 01 初识Odoo

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

2.3K30

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

> 说明: id 菜单外部ID name 如果不指定name,则: 如果为菜单设置了action,则获取action record定义中name字段值作为菜单name属性值 如果未设置菜单action.../icon.png 意为estate模块static/img/icon.png图标。...如果外部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 开发入门教程系列-约束(Constraints)

例如,在我们房地产模块中,没有什么可以阻止用户设置负预期价格。 odoo提供了两种设置自动验证恒定式方法:Python约束 and SQL约束。...可能会弹出类似以下内容错误消息: ERROR rd-demo odoo.schema: Table 'estate_property_offer': unable to add constraint...Python约束定义为用 constrains()修饰方法,并在记录集上调用。修饰符指定约束中涉及哪些字段。当修改这些字段任何字段时,将自动计算约束。...如果不满足该方法恒定式,则该方法将引发异常: from odoo.exceptions import ValidationError ......警告 当和浮点数打交道时,总是使用从 odoo.tools.float_utils导入float_compare() 和float_is_zero()方法 确保每次售价或者预期价格改变时,自动触发约束

1.4K20

Odoo 基于Win10搭建基于Win10搭建odoo14开发环境搭建

Python 安装后将Python安装路径(本例中安装路径为D:\Program Files (x86)\python36\Scripts\,D:\Program Files (x86)\python36\)添加到...参考文档 "解决安装软件包提示Unable to find vcvarsall.bat问题.md" 安装odoo依赖 解压下载后odoo_14.0.latest.tar,并对解压结果目录中dist目录下...到系统系统环境变量“PATH” 安装wkhtmltopdf 安装后,将wkhtmltopdf.exe所在目录(例中"D:\Program Files\wkhtmltopdf\bin")添加到系统环境变量...默认为localhost,UNIX则使用socket,形如/var/run/postgresql --db_port 数据库监听端口,默认5432 --addons-path 指定存储模块插件目录...-i 运行服务前,安装某些模块模块之间用逗号分隔 -u 运行服务前,更新某些模块模块之间用逗号分隔,注意配合-d使用 小技巧 The --limit-time-cpu and --limit-time-real

3.6K40

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

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

1.3K10
领券