odoo新手创建模块(二)--更进一步

一.模型中的字段

我们在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>

模块升级后,点击创建会出现如下界面:
odoo新手创建模块(二)--更进一步

三.视图的展示–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视图):
odoo新手创建模块(二)--更进一步

四.视图的展示–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"/><!--猫猫编号-->

这两行用在搜索视图,当我们在搜索栏中输入时,会自动出现选择项,询问用户当前要搜索的是猫猫的名称,还是猫猫的编号
odoo新手创建模块(二)--更进一步

<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 标签的内容是新加的,用于查询分组:
odoo新手创建模块(二)--更进一步
当我们加入数据后,分组会作用于tree视图,比如我们勾选品种类型,系统就会自动将其归类,并展示:
odoo新手创建模块(二)--更进一步
点击后,会展示数据明细:
odoo新手创建模块(二)--更进一步
from/tree/search为基础视图,也是经常需要的底层视图,详情请移步砖厂管理员ODOO13 开发教程五 模块中的基本视图(常用视图),在此不再赘述.

至此,我们在第一章的基础上更进一步,当然还有许多要扩展的东西,我们留到下一章来解决吧.

上一篇:golang - mem 使用量


下一篇:Dictionary字典映射