Odoo15官方文档 开发 核心教程 第7章:基本视图

我们在前一章中已经看到,Odoo能够为给定模型生成默认视图。实际上,对于业务应用程序来说,默认视图是永远不能满足的。相反,我们至少应该有逻辑的组织各个领域。

视图在带有动作和菜单的XML文件中定义。它们是ir.ui.view模型的实例。

在房地产模块中,我们需要有逻辑的组织字段:

  • 在列表(树)视图中,我们希望显示的不仅仅是名称。
  • 在表单视图中,应将字段分组。
  • 在搜索视图中,我们必须能够搜索的不仅仅是名称。具体来说,我们需要“可用”属性的过滤器和按邮政编码分组的快捷方式。

列表

参考:与本主题相关的文档可在列表中找到。

备注
目标:在本节末尾,列表视图应该如下所示:
在这里插入图片描述

列表视图也称为树状视图,以表格形式显示记录。

它们的根元素是<tree>。该视图最基本的版本只是列出了表中要显示的所有字段(其中每个字段都是一列):

<tree string="Tests">
    <field name="name"/>
    <field name="last_seen"/>
</tree>

这里有一个简单的例子(L46-L54行)。

练习
添加自定义列表视图。
在适当的XML文件中定义estation.property模型的列表视图。检查本节的目标以显示要显示的字段。
提示:

  • 请勿在上面的示例中添加editable="bottom"属性。我们稍后再回来。
  • 可能需要对某些字段标签进行调整以匹配参考。

与往常一样,您需要重新启动服务器(不要忘记-u选项),然后刷新浏览器以查看结果。

警告
您可能会在本章中使用一些副本,因此请始终确保每个视图的id保持唯一!

表单

参考:与本主题相关的文档可以在表单中找到。

备注
目标:在本节末尾,表单视图应如下所示:
在这里插入图片描述

表单用于创建和编辑单个记录。

它们的根元素是<form>。它们由高级结构元素(组和笔记本)和交互元素(按钮和字段)组成:

<form string="Test">
    <sheet>
        <group>
            <group>
                <field name="name"/>
            </group>
            <group>
                <field name="last_seen"/>
            </group>
            <notebook>
                <page string="Description">
                    <field name="description"/>
                </page>
            </notebook>
        </group>
    </sheet>
</form>

可以使用常规HTML标记(如div和h1)以及class属性(Odoo提供了一些内置类)来微调外观。

这里有一个简单的例子(L16-L44行)。

练习
添加自定义表单视图。
在适当的XML文件中定义estation.property模型的表单视图。检查本节的目标,以了解页面的预期最终设计。

在获得预期的结果之前,这可能需要一些反复试验;建议您一次添加字段和标签,以帮助了解其工作原理。

为了避免每次修改视图时重新启动服务器,在启动服务器时使用--dev xml参数可能很方便:

$ ./odoo-bin --addons-path=../custom,../enterprise/,addons -d rd-demo -u estate --dev xml

此参数允许您仅刷新页面以查看视图修改。

搜索框

参考:可以在搜索中找到与此主题相关的文档。

备注
目标:在本节末尾,搜索视图应如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

搜索视图与列表视图和表单视图略有不同,因为它们不显示内容。虽然它们适用于特定模型,但它们用于过滤其他视图的内容(通常是聚合视图,如列表)。除了用例的不同之外,它们的定义方式是相同的。

它们的根元素是<search>。此视图的最基本版本只是列出了需要快捷方式的所有字段:

<search string="Tests">
    <field name="name"/>
    <field name="last_seen"/>
</search>

由Odoo生成的默认搜索视图提供了按name筛选的快捷方式。在自定义搜索视图中添加用户可能筛选的字段是很常见的。

练习
添加自定义搜索视图。
在适当的XML文件中定义estair.property模型的搜索视图。检查本节目标的第一个图像以获取字段列表。

重新启动服务器后,应该可以对给定字段进行筛选。

搜索视图还可以包含<filter>元素,这些元素充当预定义搜索的开关。过滤器必须具有以下属性之一:

  • domain:将给定域添加到当前搜索
  • context:为当前搜索添加一些上下文;使用键group_by对给定字段名的结果进行分组

这里有一个简单的例子(L30-L44行)。

在进一步练习之前,有必要介绍domain概念。

Domains

参考:与本主题相关的文档可以在搜索域中找到。

在Odoo中,域对记录的条件进行编码:域是用于选择模型记录子集的条件列表。每个条件是一个三元组,包含字段名、运算符和值。如果指定字段满足应用于该值的运算符的条件,则记录满足条件。

例如,当在产品模型上使用时,以下域选择了所有单位价格大于1000的服务:

[('product_type', '=', 'service'), ('unit_price', '>', 1000)]

默认情况下,条件与隐式AND组合,这意味着需要满足每个条件才能使记录与域匹配。逻辑运算符&(AND),|(OR)和!(NOT)可用于显式组合条件。它们用于前缀位置(运算符插入在其参数之前,而不是在参数之间)。例如,要选择“属于服务或单价不在1000和2000之间”的产品:

[
  '|',
    ('product_type', '=', 'service'),
  '!', '&',
    ('unit_price', '>=', 1000),
    ('unit_price', '<', 2000)
]

练习
添加过滤器和组。
应将以下内容添加到先前创建的搜索视图中:

  • 显示可用属性的筛选器,即状态应为“New”或“Offer Received”。
  • 按邮政编码对结果进行分组的能力。

看起来不错?在这一点上,我们已经能够创建模型和设计一个用户界面,这对业务是有意义的。然而,仍然缺少一个关键组件:模型之间的链接。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值