型号属性

在/模型添加activity.py文件

class ActivityEvent(models.Model):
_name = 'activity.event'
_inherit = 'event.event'
_rec_name = 'test_field' # 字段
test_field = fields.Char(string="字段名称") # 多对多的关联表
employee_ids = fields.Many2many('files.employee', 'activity_event_files_employee_rel', string='与会员工')
event_type_id = fields.Many2one(
'activity.type', string='Category',
readonly=False, states={'done': [('readonly', True)]},
oldname='type')
  • model属性详解::类型

  • _name唯一标识,类非继承父类时必须指定。

  • _rec_name:数据显示名称,如设置则返回其指定的字段值,不设置默认显示字段为name的字段值,如无名字段则显示“模块名,ID”;详见BaseModel.name_get方法。

  • _log_access:是否自动增加日志字段(create_uid,create_date,write_uid,write_date)默认为真。

  • _auto:是否创建数据库对象默认为真,详见BaseModel._auto_init方法。

  • _table:数据库对象名称缺。省时数据库对象名称与_name指定值相同(.替换为下划线)

  • _sequence。:数据库id字段的序列。默认自动创建序列。

  • _order:数据显示排序。所指定值为模型字段,按指定字段和方式排序结果集。

      例:_order =“create_date desc”:根据创建时间降序排列。可指定多个字段。
    不指定desc默认升序排列;不指定_order默认id升序排列。
  • _constraints:自定义约束条件模型创建/编辑数据时触发,约束未通过弹出错误提示,拒绝创建/编辑。

      格式:: _constraints = [(method, 'error message', [field1, ...]), ...]
    method检查方法。返回True | False
    error message:不符合检查条件时(方法返回False)弹出的错误信息
    [field1, ...]:字段名列表,这些字段的值会出现在错误消息中。 _sql_constraints:数据库约束。 例:_sql_constraints = [ ('number_uniq', 'unique(number, code)', 'error message') ]
    会在数据库添加约束:
    CONSTRAINT number_uniq UNIQUE(number, code)
  • _inherit。:单一继承值为所继承父类_name标识如子类不定义_name属性,则在父类中增加该子类下的字段或方法,不创建新对象;如子类定义_name属性,则创建新对象,新对象拥有父类所有的字段或方法,父类不受影响。

      格式:_inherit = '父类 _name'
  • _inherits:多重继承子类通过关联字段与父类关联,子类不拥有父类的字段或方法,但是可以直接操作父类的字段或方法。

      格式:_inherits = {'父类 _name': '关联字段'}

字段属性

基础类型

  • Char:字符型,使用尺寸参数定义字符串长度。

  • Text:文本型,无长度限制。

  • Boolean:布尔型(真,假)

  • Interger:整型

  • Float:浮点型,使用数字参数定义整数部分和小数部分位数如。digits=(10,6)

  • Datetime:日期时间型

  • Date:日期型

  • Binary:二进制型

  • selection:下拉框字段。

      例:state = fields.Selection([('draft', 'Draft'),('confirm', 'Confirmed'),('cancel', 'Cancelled')], string='Status')
  • Html:可设置字体格式,样式,可添加图片.

关系类型

1. One2many:一对多关系。

  • 定义:otm = fields.One2many("关联对象 _name", "关联字段",string="字段显示名",...)

  • 例:analytic_line_ids = fields.One2many('account.analytic.line', 'move_id', string='Analytic lines')"

2. Many2one

  • 定义:mto = fields.Many2one("关联对象 _name", string="字段显示名",...)

  • 可选参数:ondelete,可选值为'级联'和'空',缺省为空表示一个端删除时多端是否级联删除。

3. Many2many

  • 定义:mtm = fields.Many2many("关联对象 _name", "关联表/中间表","关联字段1","关联字段2",string="字段显示名",...)

    其中,关联字段,关联表/中间表可不填,中间表缺省为:表1_表2_rel

  • 例:partner_id= fields.Many2many("res.partner", string="字段显示名",...)"

复杂类型

参数

  • readonly: 是否只读,缺省值False。

  • required: 必填填,缺省值Falsse。

  • string: 字段显示名,任意字符串。

  • default: 字段默认值

  • domain: 域条件,缺省值[]。在关系型字段中,domain用于过滤关联表中数据。

  • help: 字段描述,鼠标滑过时提示。

  • store: 是否存储于数据库。结合计算和相关使用。

      例:sale_order = fields.One2many("sale.order", "contract_id",string="销售订单", domain=[('state','=','sale')])
  • compute:字段值由函数计算,该字段可不储存于数据库。

      例:amount = fields.Float(string="金额总计", compute=‘_compute_amount’,store=True)
    _compute_amount为计算函数。
  • related:字段值引用关联表中某字段。

      以下代码表示:company_id引用hr.payroll.advice中company_id
    
      advice_id = fields.Many2one('hr.payroll.advice', string='Bank Advice')
    company_id = fields.Many2one('res.company', related='advice_id.company_id', string='Company', store=True)

odoo 模型与ORM的更多相关文章

  1. odoo12从零开始:三、2)odoo模型层

    前言 上一篇文章(创建你的第一个应用模块(module))已经大致描述了odoo的模型层(model)和视图层(view),这一篇文章,我们将系统地介绍有关于model的知识,其中包括: 1.模型的类 ...

  2. python 全栈开发,Day70(模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介)

    昨日内容回顾 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 Quer ...

  3. Django基础(2)--模板自定义标签和过滤器,模板继承 (extend),Django的模型层-ORM简介

    没整理完 昨日回顾: 视图函数: request对象 request.path 请求路径 request.GET GET请求数据 QueryDict {} request.POST POST请求数据 ...

  4. Odoo中的ORM API(模型数据增删改查)

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826214.html 一:增 1:create():返回新创建的记录对象 self.create({'na ...

  5. (03)odoo模型/记录集/公用操作

    -----------------更新时间11:17 2016-09-18 星期日11:00 2016-03-13 星期日09:10 2016-03-03 星期四11:46 2016-02-25 星期 ...

  6. odoo 的一些orm 操作

    1.基础文件及目录结构 在认识odoo ORM框架前,先介绍一下odoo中模块目录结构.     data:存放模块预制数据 i18n:存放国际化文件 models:存放模型等py代码 securit ...

  7. odoo中的ORM操作

    ORM方法简介 OpenERP的关键组件, ORM是一个完整的对象关系映射层,是开发人员不必编写基本的SQL管道. 业务对象被声明继承字models.Models的python类. 这让业务对象在OR ...

  8. odoo 模型继承

    在odoo中有两种模型的继承机制(传统方式和委托继承方式) 重点:在__manifest__.py中找到depends,加上要继承的模块 'depends': ['account'] 注意继承的模型所 ...

  9. (17)模型层 -ORM之msql 单表的增、删、改、查 及其他操作

    单表操作-增.删.改.查 ret=models.User.objects.filter(id=1)  #这里的结果是一个queryset对象 ret=modles.User.Objects.filte ...

随机推荐

  1. <P>标签小细节

    html标签对大小写不敏感. 注释:浏览器会自动地在段落的前后添加空行.(<p> 是块级元素) 提示:使用空的段落标记 <p></p> 去插入一个空行是个坏习惯.用 ...

  2. vue写出放大镜的效果

    用vue写出放大镜查看图片的效果. 安装 npm install vue2.0-zoom 引入 import imgZoom from 'vue2.0-zoom' 组件 components: { i ...

  3. 网页中嵌入swf文件的几种方法

    1. object + embed       传统的方法 优点:浏览器兼容性好,是 Macromedia 一直以来的官方方法缺点:a.embed 标签是不符合 W3C 的规范的,无法通过验证.当然, ...

  4. python进阶之函数和类内建魔法属性

    前言 关于对象的魔法方法我们已经讲得太多,但是对于类或函数内建的魔法属性和功能我们涉及较少,下面系统了解一下类和函数的内建属性. 查看内建属性 class Person(object): pass d ...

  5. Framebuffer 驱动学习总结(一) ---- 总体架构及关键结构体

    一.Framebuffer 设备驱动总体架构 帧缓冲设备为标准的字符型设备,在Linux中主设备号29,定义在/include/linux/major.h中的FB_MAJOR,次设备号定义帧缓冲的个数 ...

  6. LinuxUSB驱动程序调试--009:编写应用程序---验证协议【转】

    转自:http://biancheng.dnbcw.info/linux/257411.html [1] 如何编译X86下的 uBuntu APP---非常简单:            gcc -o ...

  7. 双机/RAC/Dataguard的区别【转】

    本文转自 双机/RAC/Dataguard的区别-jasoname-ITPUB博客 http://blog.itpub.net/22741583/viewspace-684261/ Data Guar ...

  8. 电脑蓝屏提示unexpected store exception的解决方法

    在我们使用电脑的过程中常常会遇到许多问题,对于许多不熟悉电脑的用户常常摸不着头脑,而部分用户在使用电脑时,电脑常常出现蓝屏的情况,并提示你的电脑遇到问题需要重新启动,与此同时,其报告错误代码为“une ...

  9. R语言以及RStdio的安装

    R语言: 首先从官网上下载R安装包, 提供了Linux, (Mac) OS X, Windows的安装包相关下载链接. RStdio: RStdio(官网)是R言语非常实用的IDE, 是一个免费的软件 ...

  10. 使用JS实现2048小游戏

    JS实现2048小游戏源码 效果图: 代码如下,复制即可使用: (适用浏览器:360.FireFox.Chrome.Opera.傲游.搜狗.世界之窗. 不支持Safari.IE8及以下浏览器.) &l ...