odoo 开发入门教程系列-基本视图】的更多相关文章

继承(Inheritance) Odoo的一个强大方面是它的模块化.模块专用于业务需求,但模块也可以相互交互.这对于扩展现有模块的功能非常有用.例如,在我们的房地产场景中,我们希望在常规用户视图中直接显示销售人员的财产列表. 在介绍特定的Odoo模块继承之前,让我们看看如何更改标准CRUD(创建.检索,更新或删除)方法的行为 Python继承(Python Inheritance) 目标: 不能删除状态不为New.Canceled的房产 预期效果动画地址:https://www.odoo.com…
计算的字段和变更(Computed Fields And Onchanges) 模型之间的关系是任何Odoo模块的关键组成部分.它们对于任何业务案例的建模都是必要的.然而,我们可能需要给定模型中字段之间的链接.有时,一个字段的值是根据其他字段的值确定的,有时我们希望帮助用户输入数据. "Computed Fields And Onchanges"的概念支持这些情况.虽然本章在技术上并不复杂,但这两个概念的语义都非常重要.这也是我们第一次编写Python逻辑.到目前为止,除了类定义和字段…
安全-简介 前一章中我们已经创建了第一个打算用于存储业务数据的表.在odoo这样的一个商业应用中,第一个考虑的问题就是谁(Odoo 用户(或者组用户))可以访问数据.odoo为指定用户组用户提供了一个安全的数据访问机制. 更多关于安全主题的详细信息可以查看 Advanced B: ACL and Record Rules.本章目标是覆盖我们新模块的最小安全需求. Data Files (CSV) Odoo是一个高度数据驱动的系统.虽然通过Python代码定制行为,但是模块的部分值在加载时设置的数…
一些用户界面 数据文件 (XML) 参考: 该主题关联文档可以查看Data Files. 上一章,我们通过CSV文件添加了数据.当需要添加数据格式简单时,用CSV格式还是很方便的,当数据格式更复杂时(比如视图架构或者一个邮件模板),我们使用XML格式.比如包含HTML tags的 help field.虽然可以通过CSV文件加载这样的数据,但是使用XML更方便. 类似CSV文件,XML文件也必须按约定添加到合适的目录,并在 __manifest__.py中进行定义.数据文件中的内容也是在模块安装…
模型之间的关系(Relations Between Models) 上一章介绍了为包含基本字段的模型创建自定义视图.然而,在任何真实的业务场景中,我们都需要不止一个模型.此外,模型之间的链接是必要的.人们可以很容易地想象一个模型包含客户,另一个模型则包含用户列表.你可能需要参考任何现有业务模型上的客户或用户. 在我们的estate模块中,我们需要有关房产的以下信息: 购买房产的客户 出售房产的真实重述代理人 房产类型:房子.公寓.顶层公寓.城堡- 显示了该酒店特色的一系列标签:舒适.翻新- 收到…
准备一些操作(Action)? 到目前为止,我们主要通过声明字段和视图来构建模块.在任何真实的业务场景中,我们都希望将一些业务逻辑链接到操作按钮.在我们的房地产示例中,我们希望能够: 取消或将房产设置为已售出 接受或拒绝报价 有人可能会说,我们已经可以通过手动更改状态来完成这些事情,但这并不太方便.此外,我们还想增加一些额外的处理:当报价被接受时,我们想设定房产的售价和买家. 操作类型(Action Type) 参考:本主题相关文档可参考Actions 和Error management 在我们…
添加修饰 我们的房地产模块现在从商业角度来看是有意义的.我们创建了特定的视图,添加了几个操作按钮和约束.然而,我们的用户界面仍然有点粗糙.我们希望为列表视图添加一些颜色,并使一些字段和按钮有条件地消失.例如,当房产已出售或取消时,"已售出"和"取消"按钮应消失,因为此时不再允许更改状态. 参考: 文档关联的主题可以查看 Views. 内联视图(Inline Views) 在房地产模块中,我们为房产添加了一个报价列表.我们通过以下代码简单地添加了offer_ids字段…
QWeb简史 到目前为止,我们的房地产模块的界面设计相当有限.构建列表视图很简单,因为只需要字段列表.表单视图也是如此:尽管使用了一些标记,如<group>或<page>,但在设计方面几乎没有什么可做的. 然而,如果我们想给我们的应用程序一个独特的外观,就必须更进一步,能够设计新的视图.此外,PDF报告或网站页面等其他功能需要另一个更灵活的工具:模板引擎. 您可能已经熟悉现有的引擎,如Jinja(Python).ERB(Ruby) 或Twig(PHP).Odoo自带内置引擎:QWe…
模型和基本字段 在上一章的末尾,我们创建一个odoo模块.然而,此时它仍然是一个空壳,不允许我们存储任何数据.在我们的房地产模块中,我们希望将与房地产相关的信息(名称(name).描述(description).价格(price).居住面积(living area)-)存储在数据库中.odoo框架提供了数据库交互的工具 开始练习前,请确保estate模块已被安装,也就是说必须以installed的状态出现在Apps列表中,如下 对象关系映射(Object-Relational Mapping)…
约束(Constraints) 上一章介绍了向模型中添加一些业务逻辑的能力.我们现在可以将按钮链接到业务代码,但如何防止用户输入错误的数据?例如,在我们的房地产模块中,没有什么可以阻止用户设置负预期价格. odoo提供了两种设置自动验证恒定式的方法:Python约束 and SQL约束. SQL 参考:与此主题相关的文档可以查看 Models 和PostgreSQL文档 我们通过模型属性_sql_constraints来定义SQL约束,该属性被赋值为一个包含三元组(name, sql_defin…