一.模型中的字段
我们在models文件夹下,找到My_Cats_HomePage.py文件,并添加更多的字段:
# -*- coding: utf-8 -*-
from odoo import models, fields, api
class My_Cats_HomePage(models.Model):
_name = 'my.cats'
_description = 'My Cats HomePage'
name = fields.Char(string="猫猫名称", required=True)
#Char--文本类型,string表示前端展现时的字段描述
#required:设置为True时表示在前端使用文本字段不可以为空
code = fields.Char(string="猫猫编号", copy=False, help="管理编号,用于快速定位猫猫")
#help:进行前端展示时,发送给用户的提示信息
age = fields.Integer(string="年龄")
#Integer:整数类型
doing_date = fields.Date(string="入店时间")
#Date: 日期型
price = fields.Float(string="定价", digits=(7, 2))
#Float: 浮点型,可指定显示位数和小数点,
#digits是一个元组,前面的数代表该数字的总位数,后面的数字代表小数点的精度
description = fields.Text(string="内容简介", help="""向借购买者描述本主子内容""")
#Text:文本类型
cat_type = fields.Selection(
[("common", "普通"), ("hardcover", "纯种")],
string="品种类型", index=True, default='common'
)
#Selection:常值单选,(也称下拉列表)
#default:字段的默认值属性,这里表示此选项默认值是common(普通)
#index:如果设置为True则会在对应的数据库字段上添加索引,会提升该字段进行查询的效率,同时也降低写入数据库表的速度.
borrowed = fields.Boolean(string="是否被收养", default=False)
#Boolean:布尔值,
#default:预设值,我们将其默认为False,表示不操作时,系统会记录False的值
date_last_borrowed = fields.Datetime("最后被收养时间", index=True, readonly=True)
#Datetime: 日期+时间型
#readonly,默认位False,如果为True则在前端不可编辑,在模型层通过函数更改数据不会受影响
字段的详情描述,可移步小白读odoo参考手册–字段或砖厂管理员的ODOO13 开发教程四 模型中的字段,里面都有详细的解释.我们将这些字段加入模型,就代表这下次重启,更新后,对应的PG数据库会自动添加这些列.
二.视图的展示–from
完善了模型的字段后,我们要将其暴露出去,交给视图层,用于客户的增删改查等操作,让客户使用.
在views文件夹下,打开My_Cats_HomePage_view.xml文件,先改动from视图:
<record id="my_cats_view_form" model="ir.ui.view">
<field name="name">猫猫管理系统</field>
<field name="model">my.cats</field>
<field name="arch" type="xml">
<form>
<header>
</header>
<sheet>
<group>
<group>
<field name="name"/>
<field name="cat_type"/>
<field name="price"/><!--在此处添加了新的字段-->
<field name="borrowed"/>
</group>
<group>
<field name="code"/>
<field name="age"/>
<field name="doing_date"/>
<field name="date_last_borrowed"/>
</group>
<group>
<field name="description"/>
</group>
</group>
</sheet>
</form>
</field>
</record>
在模块升级后,点击创建会出现如下界面:
三.视图的展示–tree
然后在此基础上,修改tree视图:
<record id="my_cats_view_tree" model="ir.ui.view">
<field name="name">猫猫管理系统</field>
<field name="model">my.cats</field>
<field name="arch" type="xml">
<tree>
<field name="code"/>
<field name="name"/>
<field name="age"/><!--在此处添加了新的字段-->
<field name="cat_type"/>
<field name="price"/>
<field name="borrowed"/>
<field name="date_last_borrowed"/>
<field name="doing_date"/>
<field name="description"/>
</tree>
</field>
</record>
无非就是将我们在模型中的字段拿出来,塞入视图当中.在模块升级后,会出现如下界面(tree视图):
四.视图的展示–search
修改search视图:
<record id="my_cats_view_search" model="ir.ui.view">
<field name="name">猫猫管理系统</field>
<field name="model">my.cats</field>
<field name="arch" type="xml">
<search>
<field name="name"/>
<field name="code"/>
<group expand="0" string="Group By"><!--在此处添加修改-->
<filter string="品种类型" name="cat_type" context="{'group_by':'cat_type'}"/>
<filter string="定价" name="price" context="{'group_by':'price'}"/>
<separator/>
<filter string="最后被收养时间" name="date_last_borrowed" context="{'group_by':'date_last_borrowed'}"/>
</group>
</search>
</field>
</record>
逐一介绍其作用:
<field name="name"/><!--猫猫名称-->
<field name="code"/><!--猫猫编号-->
这两行用在搜索视图,当我们在搜索栏中输入时,会自动出现选择项,询问用户当前要搜索的是猫猫的名称,还是猫猫的编号
<group expand="0" string="Group By"><!--分组查询-->
<!--
string:为前端展示的分类名称
name:为需要分类的字段
context:逻辑
举例{'group_by':'cat_type'},表示将使用group_by,对cat_type字段进行归类操作
-->
<filter string="品种类型" name="cat_type" context="{'group_by':'cat_type'}"/>
<filter string="定价" name="price" context="{'group_by':'price'}"/>
<separator/><!--一条分割线-->
<filter string="最后被收养时间" name="date_last_borrowed" context="{'group_by':'date_last_borrowed'}"/>
</group>
其中group 标签的内容是新加的,用于查询分组:
当我们加入数据后,分组会作用于tree视图,比如我们勾选品种类型,系统就会自动将其归类,并展示:
点击后,会展示数据明细:
from/tree/search为基础视图,也是经常需要的底层视图,详情请移步砖厂管理员的ODOO13 开发教程五 模块中的基本视图(常用视图),在此不再赘述.
至此,我们在第一章的基础上更进一步,当然还有许多要扩展的东西,我们留到下一章来解决吧.