之前我们已经讲解了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常用的字段属性的更多相关文章

  1. Python - Django - ORM 常用的字段属性

    字段参数: null:用于表示某个字段可以为空 unique:如果设置为 unique=True,则该字段在此表中必须是唯一的 db_index:如果 db_index=True,则代表着为此字段设置 ...

  2. Odoo ORM研究2 - BaseModel中的常用方法分析

    今天继续研究ORM的BaseModel,昨天研究了一下所有常用属性的具体用法,那么今天研究一下BaseModel中一些常用的方法,我们学会它们并灵活的应用它们,可以为我们开发解决很多的问题. odoo ...

  3. Django ORM (一) 创建数据库和模型常用的字段类型参数及Field 重要参数介绍

    创建一个 Django 项目及应用 django-admin startproject orm cd orm python manage.py startapp app01 在 models.py 上 ...

  4. odoo字段属性列举

    罗列一些Odoo中的字段属性,基本包含大部分的属性. 常用字段属性 平平无奇常用字段属性 string:字段的标题,在UI视图标签中使用.它是可选项,如未设置,会通过首字母大写及将空格替换成为下划线来 ...

  5. odoo字段属性

    以下为可用的非关联字段类型以及其对应的位置参数: Char(string)是一个单行文本,唯一位置参数是string字段标签. Text(string)是一个多行文本,唯一位置参数是string字段标 ...

  6. django的Model 模型中常用的字段类型

    常用的字段类型: AutoField:自增长字段,通常不用,如果未在Model中显示指定主键,django会默认建立一个整型的自增长主键字段 BooleanField:布尔型,值为True或False ...

  7. EntityFramework Core 1.1+ Backing Fields(返回字段)

    前言 通过我发表的博文可知最近一段时间会将持续讲解EntityFramework Core特性,在此之前我提到过Backing Fields,回头翻了翻感觉写的还不够好,于是乎再来讲解一番,也是自己再 ...

  8. ORACLE常用数据库字段类型

    ORACLE常用数据库字段类型   常用的数据库字段类型如下:   字段类型 中文说明 限制条件 其它说明  CHAR 固定长度字符串 最大长度2000 bytes     VARCHAR2 可变长度 ...

  9. MySQL常用的数据类型和字段属性

    数据类型 数值 tinyint 十分小的数据 1个字节 smallint 较小的数据 2个字节 mediumint 中等大小的数据 3个字节 int 标准的整数 4个字节 常用 bigint 较大的数 ...

随机推荐

  1. 机器学习PAI

    机器学习PAI 机器学习PAI(Platform of Artificial Intelligence)是阿里云人工智能平台,提供一站式的机器学习解决方案.本文介绍什么是机器学习PAI. 什么是机器学 ...

  2. YOLOV4各个创新功能模块技术分析(二)

    YOLOV4各个创新功能模块技术分析(二) 四.数据增强相关-GridMask Data Augmentation 论文名称:GridMask Data Augmentation 论文地址:https ...

  3. gpgpu-sim卡分配程序设计实例分析

    gpgpu-sim卡分配程序设计实例分析 运行代码地址:https://github.com/gpgpu-sim/gpgpu-sim_distribution 一.概述 此文件包含有关安装.生成和运行 ...

  4. 【NX二次开发】根据视图名称旋转视图,在布局中替换视图uc6464

    uc6464("布局名","旧视图名","新视图名");输入布局名.旧视图名.新视图名.如果布局名为空则更新当前布局.如果旧视图名为空,则工 ...

  5. 【VBA】读取另一个excel工作簿中的内容

    后台打开工作簿读取内容源码: Sub subOpenWorkbook() Dim datebase As String datebase = "... ....xlsx" Appl ...

  6. 【C++】解决c++中cout输出中文乱码问题

    问题:cout输出中文乱码.例如下面的代码输出会乱码. cout << "成功!" << endl; 输出结果: 解决方案: 控制台还原旧版即可,打开程序- ...

  7. 安装linux 报错(initramfs) Unable to find a medium containing a live file system

    如题,linux 安装报错:(initramfs) Unable to find a medium containing a live file system 我是用UItraISO做的启动盘遇到这个 ...

  8. jQuery获取标签信息

    <!DOCTYPE html><html><head>    <meta charset="utf-8"/>    <titl ...

  9. excel函数提取身份证出生日期,分离日期时间的日期和时间

    1.提取身份证出生日期 =1*TEXT(MID(H13,7,8),"0-00-00")用MID函数提取表示日期的位数,再用text函数转换为格式1998-6-21格式的文本,再通过 ...

  10. 六、JavaSE语言基础之数组

    一维数组(关键字[]) 关于数组的一些概念: 数组是多个基本数据有机组合形成一个复杂数据,是一个引用数据类型数据. 数组:装指定数量元素类型相同的数据的容器. 元素:在数组中,数组中的每个数据称之为数 ...