之前我们已经讲解了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. AlexeyAB DarkNet YOLOv3框架解析与应用实践(五)

    AlexeyAB DarkNet YOLOv3框架解析与应用实践(五) RNNs in Darknet 递归神经网络是表示随时间变化的数据的强大模型.为了更好地介绍RNNs,我强烈推荐Andrej K ...

  2. selenium常用方法集合

    一.selenium定位元素的8种方法: 1.find_element_by_id() 2.find_element_by_name() 3.find_element_by_css() 4.find_ ...

  3. 「Spring Boot架构」集成Mybatis-Plus的实例详解

    MyBatis-Plus(简称 MP)是一个 MyBatis 的增强工具,在 MyBatis 的基础上只做增强不做改变,为简化开发.提高效率而生. 特性 无侵入:只做增强不做改变,引入它不会对现有工程 ...

  4. NOIP模拟测试16「Drink·blue·weed」

    话说这次考试 Drink 非常棒的一道卡常练习题,适合练习卡常 真的很棒 前置卡常知识 1.char要比int快 char是最快的 输出putchar,输入getchar 在这个题快了7000豪 2. ...

  5. RAC+DG修改sys密码

    一.版本: 操作系统版本:SUSE 11 数据库版本:11.2.0.4 二.需求 因安全要求,需要修改SYS密码 三.步骤 1节点执行命令: alter user sys identified by ...

  6. Oracle对大表进行delete注意事项

    如果对大表进行大量的delete和update,那么可以注意一下如下说明: (1) 查看执行计划,如果说删除的记录很多,走索引的成本会比全表扫描更大,因为更新数据时还需要做一些约束校验和创建index ...

  7. 使用echarts时,鼠标首次移入屏幕会闪动,全屏会出现滚动条

    原因: 在echarts图表中出现tooltip时,画布的父标签(即:echarts.init()的标签)的有时宽高都会发生变化,导致相对布局的div可能大小发生变化(画布大小却不变),导致页面闪动. ...

  8. Duilib的双缓冲实现,附带GDI、WTL的双缓冲实现

    前言: 闪烁问题,之前的经验是使用双缓冲,借此机会,把双缓冲的研究心得总结下. 双缓冲的含义: 缓冲这个词,相信大家都不陌生,Cache.主要是为了解决上下游(或者模块.或者系统)等性能不匹配问题.如 ...

  9. js 判断是什么浏览器加载页面

    一.Navigator 属性: 1)appcodeName  返回浏览器代码名 2)appminorVersion  返回浏览器次级版本 3)appname  返回浏览器名称 4)browserLan ...

  10. 浅读tomcat架构设计之tomcat生命周期(2)

    浅读tomcat架构设计和tomcat启动过程(1) https://www.cnblogs.com/piaomiaohongchen/p/14977272.html tomcat通过org.apac ...