​python学习手册大全点我下载​

5、基本视图

​​​点我下载完整odoo的demo​


​python学习手册大全点我下载​

视图定义了模型数据如何显示, 每种类型的视图代表一种数据可视化模式.

基本的视图定义

一个视图是以一条ir.ui.view模型数据的形式定义的.

<record model="ir.ui.view" id="view_id">
<field name="name">view.name</field>
<field name="model">object_name</field>
<field name="priority" eval="16"/>
<field name="arch" type="xml">
<!-- view content: <form>, <tree>, <graph>, ... -->
</field>
</record>

Tree views

Tree view也被称为list views, 在一个表格中显示记录. 根元素是<tree>, 最简形式的tree view只是简单地列出每条记录的多个字段, 每个字段为一列.

<record model="ir.ui.view" id="course_tree_view">
<field name="name">course.tree</field>
<field name="model">myproject.course</field>
<field name="arch" type="xml">
<tree string="Course Tree">
<field name="name"/>
<field name="description"/>
</tree>
</field>
</record>

5、odoo基本视图_搜索

Form views

Form用于创建或编辑单条记录, 根元素是form, 可以在form中组合各种高层结构元素(如groups, notebooks)以及交互元素(如buttons, fields).

<record model="ir.ui.view" id="course_form_view">
<field name="name">course.form</field>
<field name="model">myproject.course</field>
<field name="arch" type="xml">
<form string="Course Form">
<sheet>
<group>
<field name="name"/>
<field name="description"/>
</group>
</sheet>
</form>
</field>
</record>

5、odoo基本视图_字段_02

使用notebook. 在form view中, 将description字段放在一个tab中

<sheet>
<group>
<field name="name"/>
<field name="description"/>
</group>
<notebook>
<page string="Description">
<field name="description"/>
</page>
<page string="About">
This is an example of notebooks
</page>
</notebook>
</sheet>
</form>
</field>

更新模块, 看效果:

5、odoo基本视图_xml_03

还可以使用HTML为form view提供更加灵活的布局, 例如下面的例子.

<form string="Idea Form">
<header>
<button string="Confirm" type="object" name="action_confirm"
states="draft" class="oe_highlight" />
<button string="Mark as done" type="object" name="action_done"
states="confirmed" class="oe_highlight"/>
<button string="Reset to draft" type="object" name="action_draft"
states="confirmed,done" />
<field name="state" widget="statusbar"/>
</header>
<sheet>
<div class="oe_title">
<label for="name" class="oe_edit_only" string="Idea Name" />
<h1><field name="name" /></h1>
</div>
<separator string="General" colspan="2" />
<group colspan="2" col="2">
<field name="description" placeholder="Idea description..." />
</group>
</sheet>
</form>

Search views

Search views用来自定义list views及其它统计多条记录视图中的搜索字段. 根元素为search, 其子元素定义了可以在哪些字段上进行搜索.

<search>
<field name="name"/>
<field name="inventor_id"/>
</search>

如果一个模型没有定义对应的Search view, odoo自动创建一个仅搜索name字段的search view.

<record model="ir.ui.view" id="course_view_search">
<field name="name">course.search</field>
<field name="model">myproject.course</field>
<field name="arch" type="xml">
<search>
<field string="名称" name="name"/>
<filter string="男" name="sex_male" domain="[('sex', '=', True)]"/>
<filter string="女" name="sex_female" domain="[('sex', '=', False)]"/>
<!--                    分组-->
<filter string="性别" context="{'group_by':'sex'}" name="sex"/>
</search>
</field>
</record>

更新模块(点击应用,找到对应的应用,点击进去,然后点击升级), 搜索框输入字符后可以看到下方能够选择搜索description字段.

5、odoo基本视图_xml_04

注:设置默认搜索值

在context标签添加字典,键名search_default_名称,这个名称是search标签中的filter中的name,比如

上面的<filter string="男" name="sex_male" domain="[('sex', '=', True)]"/>中的name值为sex_male,那么设置这个为默认搜索值时,需要写成{'search_default_sex_male':True}

<record id="course_list_action" model="ir.actions.act_window">
<field name="name">课程</field>
<field name="res_model">myproject.course</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="course_tree_view"/>
<field name="help" type="html">
<p class="o_view_nocontent_smiling_face">
Setup a new automated automation
</p>
</field>
<!--            默认筛选男的-->
<field name="context">{'search_default_sex_male':True}</field>
<field name="groups_id" eval="[(4, ref('base.group_user'))]"/>
</record>

点我下载完整odoo的demo

后记

【后记】为了让大家能够轻松学编程,我创建了一个公众号【轻松学编程】,里面有让你快速学会编程的文章,当然也有一些干货提高你的编程水平,也有一些编程项目适合做一些课程设计等课题。


如果文章对您有帮助,请我喝杯咖啡吧!

公众号

5、odoo基本视图_搜索_05


关注我,我们一起成长~~