引言![](https://i-blog.csdnimg.cn/direct/66f98aea1e20455e9f51fef0aa83d49d.png)
上一章主要讲了如何用命令快速创建一个(模块)应用的文件,没有具体讲文件中具体分别是什么,各文件写的是什么。本期讲下开发中最基础的一些文件代码。
首先通过上期对自定义应用文件的注释取消就得到一个有页面应用。主要修改了
~\views\views.xml、~\models\models.py 、~\security\ir.model.access.csv 这三个文件
views.xml:
这个文件用于定义Odoo模块的用户界面视图。视图是用户与数据交互的界面,如表单视图、列表视图、搜索视图等。在views.xml
文件中,你可以指定如何在Odoo的用户界面中展示模型数据,包括字段的布局、分组、排序等。
models.py:
这个文件包含了模块的业务逻辑和数据模型。在models.py
文件中,你定义了Odoo模型,这些模型映射到数据库表,并包含了字段定义和业务逻辑方法。字段定义了模型的数据结构,而方法则实现了业务逻辑,如数据验证、计算字段值等。
ir.model.access.csv:
这个文件用于定义模型的访问控制规则。在ir.model.access.csv
文件中,你可以指定哪些用户组可以读取、写入、创建或删除特定模型的记录。这些访问控制规则对于确保数据安全和符合业务需求至关重要。
上面是gpt介绍的,我自己理解大体就是views.xml就主要写前端页面,该页面需要显示什么。model.py写前端页面显示字段的数据模型,该页面显示的数据有哪些,如何存储等。我也是非开发人员,第一次接触odoo,感觉odoo挺抽象的,主要是记录一下,如有错误欢迎指教。
一、views.xml视图文件讲解
views.xml基础代码主要分为三部分视图、动作、菜单,下图是上期的示例代码(部分)。
1、视图
odoo的基础视图,主要有8种:表单视图 (Form View)、列表视图 (List View)、看板视图 (Kanban View)、数据透视表视图 (Pivot View)、.图表视图 (Graph View)、日历视图 (Calendar View)、搜索视图 (Search View)、活动视图 (Activity View)。示例中的就是列表视图,我们就用列表视图讲下。
<!-- 定义一个Odoo视图,用于展示odoo_myapp模块中的数据 -->
<record model="ir.ui.view" id="odoo_myapp.list">
<!-- 视图的名称 -->
<field name="name">odoo_myapp list</field>
<!-- 视图关联的模型 -->
<field name="model">odoo_myapp.odoo_myapp</field>
<!-- 视图的结构定义 -->
<field name="arch" type="xml">
<!-- 定义列表视图 -->
<tree>
<!-- 列出模型中的name字段 -->
<field name="name"/>
<!-- 列出模型中的value字段 -->
<field name="value"/>
<!-- 列出模型中的value2字段 -->
<field name="value2"/>
</tree>
</field>
</record>
model="ir.ui.view"表示这是一个视图,视图的固定写法。
id="odoo_myapp.list"是唯一标识符,注意不要和其他的一样。
<field name="name">odoo_myapp list</field>视图名称可以随意写。
<field name="model">odoo_myapp.odoo_myapp</field>视图指定的模型。
这里指定的model.py里的_name。
这一段属于固定写法列表视图的定义方式
<field name="arch" type="xml">
<tree>
<field name="name"/>
<field name="value"/>
<field name="value2"/>
</tree>
</field>
其中的name、value、value2对应的是这一块。
这段代码大概表示这个页面。这个是列表视图。
2、动作
比较抽象,相当于把菜单按钮和页面联系起来的部分,它说明了某个菜单按钮按下之后会跳转到那个页面试图。
<!--model="ir.actions.act_window"定义窗口动作的固定写法-->
<!--随意写即可注意唯一标识,和菜单代码中的action对应即可,当前阶段可以理解为指定菜单按钮。-->
<record model="ir.actions.act_window" id="odoo_myapp.action_window"/>
<!--name定义动作名可以随意写。-->
<field name="name">odoo_myapp_window</field>
<!--res_model指定模型,需要和views视图中的model一致。-->
<field name="res_model">odoo_myapp.odoo_myapp</field>
<!--view_mode指定试图类型。我们当前没有定义form表单试图但是它list列表试图有默认的form表单试图。-->
<field name="view_mode">tree,form</field>
</record>
3、菜单
基本都是固定写法,name随意写,注意id唯一标识符不能重复,parent表示父级菜单是谁,action
表示点击这个菜单项后需要执行什么动作。
<menuitem name="odoo_myapp" id="odoo_myapp.menu_root"/>
<menuitem name="Menu 1" id="odoo_myapp.menu_1" parent="odoo_myapp.menu_root"/>
<menuitem name="List" id="odoo_myapp.menu_1_list" parent="odoo_myapp.menu_1" action="odoo_myapp.action_window"/>
这段代码主要代表前端这些地方。
二、model. py模型文件讲解
主要看views.xml如何写,对应的变量名需要对应些。这样写完前端填表修改等操作odoo就自己操作掉了,不需要我们开发者去写数据库操作等,当然也能自己重写。正常开发中不只有下面这些,后面还得慢慢学咯!!!
from odoo import models, fields //引入odoo相关的库
//类名随意,(model.Model固定写法)
class odoo_myapp(models.Model):
_name = 'odoo_myapp.odoo_myapp' //表示模型名称,与views.xml中的model对应。
_description = 'odoo_myapp.odoo_myapp' //模型描述,随意些
name = fields.Char() //字符型
value = fields.Integer() //整型
value2 = fields.Float(compute="_value_pc", store=True) //浮点型
description = fields.Text() //文本型
自定义应用最基础的代码就是这些,还需要学习其他几种视图的写法。模型也一样不止这几个字段和参数。博主技术有限就不多讲,以免误导。可以看看其他大佬的教程。