ORM研究3 - odoo fields常用的字段属性
之前我们已经讲解了odoo ORM中的一些对字段常用的API操作方法,今天我们继续研究一下Odoo orm中字段的一些通用属性字段的使用,学会它们可以为自己创建数据映射并使用有更好的帮助。
通用字段属性
实例化映射模型的时候时可以使用以下属性
string(str)
- xml视图在渲染的时候会显示这个值的内容。
fandx_name = fields.Char(string="姓名")
help(str)
- 帮助文字,鼠标放到对应字段上面会出现help的描述内容。
fandx_name = fields.Char(help="这是一个姓名")
readonly(bool)
- 是否是只读,只读则不可以修改字段的内容,在视图中不可以修改对应字段的内容。
fand_name = fields.Char(string="姓名", readonly=True)
required(bool)
- 是否必填,如果required为True,那么这个字在XML视图显示的时候不填则保存的时候会报错。
fandx_name = fields.Char(string="姓名", readonly=True, required=True)
index(bool)
- 是否在数据库建立索引,加上索引的字段在搜索的时候会有速度的提升。
fandx_name = fields.Char(string="姓名", readonly=True, required=True, index=True)
default(value 或者 callable)
default可以设置这个字段的默认值。
default的内容可以是固定的默认值。
default也可以是一个被调用的function,default的值会自动设置为function的返回值。
方式一:
fandx_name = fields.Char(string="姓名", default="张三")方式二:
fandx_name = fields.Char(string="姓名", default=lambda self: self.env.user.display_name)方式三:
def _defult_name(self):
return self.env.user.display_name
fandx_name = fields.Char(string="姓名", invisible=True, default=_defult_name)
states(bool)
这个可以根据state状态的的值动态改变字段在XML中的显示状态。
必须配合state状态字段使用。
model.py
state = fields.Selection([('create', '创建'), ('finish', '已完成')], string='状态', default='create')
fandx_test = fields.Char("测试字段", states={'create': [('required', True)], 'finish': [('readonly', True)]})
View.xml
<field name="state" />
<field name="fandx_test" />
注意:!!!用到这个方法必须要在xml视图中加载state字段,如果不加载则会报JS错误。
groups(str)
- 权限组,odoo中可以去配置自己的权限组,可以给指定的字段赋予权限组,这个字段会根据权限组的内容设置进行限制增删改查权限。
fandx_name = fields.Char(string="姓名", default="张三", groups='base.group_user')
company_dependent(bool)
- 这个字段如果为True的话,这个字段的数据值会根据登录的用户的公司进行绑定,可以实现不同用户不同字段内容显示。
fandx_name = fields.Char(string="姓名", company_dependent=True)
copy(bool)
- odoo有自带的模型快速复制的功能,这个如果copy的值为False那么就不会被复制,这个值默认值为True,one2many字段和计算字段是默认为Fasle的。
fandx_name = fields.Char(string="姓名", company_dependent=True, copy=False)
store(bool)
- 是否存储到数据库中,默认值为True,compute计算字段默认值为False。
fandx_name = fields.Char(string="姓名", store=False)
group_operator(str)
这里的str内容是固定的选择,在搜索分组的时候计算字段的值会用到这个group_operator的内容。
count - 计算数量。
count_distinct - 数据不同的数量。
bool_and - 如果所有值都为true,则为true,否则为false。
bool_or - true if at least one value is true, otherwise false。
max - 最大值。
min - 最小值。
avg - 平均值。
sum - 求和。

fandx_nums = fields.Integer(string="a_test", group_operator='sum')
group_expand(str)
这里传进一个方法名称,在分组的时候会进行调用这个方法。
state = fields.Selection([('create', '创建'), ('finish', '已完成')], string='状态', default='create', group_expand="_expand_states") def _expand_states(self, states, domain, order):
# 这里返回需要成组的字段,如果按state分组就会走到这个方法!
return [key for key, val in type(self).state.selection]
总结
- 通用属性在创建字段的时候是经常会用到的,我们需要灵活的使用它们。
- 还有compute计算属性,这里就先不做解释,后面单独去讲解它。
- 如果有问题请在下方留言讨论或者联系我W:fandx_
ORM研究3 - odoo fields常用的字段属性的更多相关文章
- Python - Django - ORM 常用的字段属性
字段参数: null:用于表示某个字段可以为空 unique:如果设置为 unique=True,则该字段在此表中必须是唯一的 db_index:如果 db_index=True,则代表着为此字段设置 ...
- Odoo ORM研究2 - BaseModel中的常用方法分析
今天继续研究ORM的BaseModel,昨天研究了一下所有常用属性的具体用法,那么今天研究一下BaseModel中一些常用的方法,我们学会它们并灵活的应用它们,可以为我们开发解决很多的问题. odoo ...
- Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍
创建一个 Django 项目及应用 django-admin startproject orm cd orm python manage.py startapp app01 在 models.py 上 ...
- odoo字段属性列举
罗列一些Odoo中的字段属性,基本包含大部分的属性. 常用字段属性 平平无奇常用字段属性 string:字段的标题,在UI视图标签中使用.它是可选项,如未设置,会通过首字母大写及将空格替换成为下划线来 ...
- odoo字段属性
以下为可用的非关联字段类型以及其对应的位置参数: Char(string)是一个单行文本,唯一位置参数是string字段标签. Text(string)是一个多行文本,唯一位置参数是string字段标 ...
- django的Model 模型中常用的字段类型
常用的字段类型: AutoField:自增长字段,通常不用,如果未在Model中显示指定主键,django会默认建立一个整型的自增长主键字段 BooleanField:布尔型,值为True或False ...
- EntityFramework Core 1.1+ Backing Fields(返回字段)
前言 通过我发表的博文可知最近一段时间会将持续讲解EntityFramework Core特性,在此之前我提到过Backing Fields,回头翻了翻感觉写的还不够好,于是乎再来讲解一番,也是自己再 ...
- ORACLE常用数据库字段类型
ORACLE常用数据库字段类型 常用的数据库字段类型如下: 字段类型 中文说明 限制条件 其它说明 CHAR 固定长度字符串 最大长度2000 bytes VARCHAR2 可变长度 ...
- MySQL常用的数据类型和字段属性
数据类型 数值 tinyint 十分小的数据 1个字节 smallint 较小的数据 2个字节 mediumint 中等大小的数据 3个字节 int 标准的整数 4个字节 常用 bigint 较大的数 ...
随机推荐
- BEP 7:CUDA外部内存管理插件(下)
BEP 7:CUDA外部内存管理插件(下) Numba依赖 向库中添加EMM插件的实现自然会使Numba成为库的依赖项,而以前可能没有.为了使依赖关系可选,如果需要的话,可以有条件地实例化并注册EMM ...
- python+selenium基础篇,句柄操作(多个页面切换)
1.我们打开网页有时候会开出多个页面,导致我们常常定位不到我们需要的元素,这种情况可能就是句柄的因素,如下图所示: 2.句柄切换代码如下: from selenium import webdriver ...
- 阿里面试挂了,就因为面试官说我Spring 事务管理(器)不熟练?
前言 事务管理,一个被说烂的也被看烂的话题,还是八股文中的基础股之一.但除了八股文中需要熟读并背诵的那些个传播行为之外,背后的"为什么"和核心原理更为重要. 写这篇文章之前,我 ...
- .NET平台系列24:从.NET Framework迁移到.NET Core/.NET5的技术指南
系列目录 [已更新最新开发文章,点击查看详细] 本文讲解了在将代码从 .NET Framework 移植到 .NET(旧称为 .NET Core)时应考虑的事项. 对于许多项目,从 .NET ...
- 【逆向实战】ES文件浏览器未授权访问漏洞(CVE-2019-6447)具体分析及利用
/作者:Kali_MG1937 CSDN博客号:ALDYS4 QQ:3496925334 未经许可,禁止转载/ 漏洞简介 CVE-2019-6447是Android端上的一个知名软件:ES文件浏览器的 ...
- 04-拉格朗日对偶问题和KKT条件
04-拉格朗日对偶问题和KKT条件 目录 一.拉格朗日对偶函数 二.拉格朗日对偶问题 三.强弱对偶的几何解释 四.鞍点解释 4.1 鞍点的基础定义 4.2 极大极小不等式和鞍点性质 五.最优性条件与 ...
- Pytest学习笔记3-fixture
前言 个人认为,fixture是pytest最精髓的地方,也是学习pytest必会的知识点. fixture用途 用于执行测试前后的初始化操作,比如打开浏览器.准备测试数据.清除之前的测试数据等等 用 ...
- 为什么switch里的case没有break不行
前言 一个小姐姐拿着一个switch的选择题来问我. 之所以这么笃定地回答这个问题,并不是我知道其中原理,而是之前在一个群里,有人问了同类型的问题,我瞥了一眼记住了答案,所以才依葫芦画瓢. 小姐姐接着 ...
- 重新整理 .net core 实践篇————网关[三十六]
前言 简单整理一下网关. 正文 在介绍网关之前,介绍一下BFF,BFF全称是Backend For Frontend,它负责认证授权,服务聚合,目标是为前端提供服务. 说的通透一点,就是有没有见过这种 ...
- 17、lnmp_php编译安装
17.1.FastCGI介绍: 1.什么是CGI: CGI的全称为"通用网关接口",为http服务器与其他机器上的程序服务通信交流的一种工具,CGI程序 必须运行在网络服务器上:传 ...