• odoo 模型与ORM


    型号属性

    在/模型添加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)
  • 相关阅读:
    Tomcat 结合Atomikos 实现JTA
    [译]Kinect for Windows SDK开发入门(十一):手势识别 下:基本手势识别
    [译]Kinect for Windows SDK开发入门(十二):语音识别 上
    [译]Kinect for Windows SDK开发入门(十):手势识别 上:基本概念
    [译]Kinect for Windows SDK开发入门(十五):进阶指引 下
    [译]Kinect for Windows SDK开发入门(九):骨骼追踪进阶 下
    [译]Kinect for Windows SDK开发入门(十四):进阶指引 上
    [译]Kinect for Windows SDK开发入门(八):骨骼追踪进阶 上
    [译]Kinect for Windows SDK开发入门(十三):语音识别 下
    Codeforces Round #757 (Div. 2) A D
  • 原文地址:https://www.cnblogs.com/chenshuquan/p/10523264.html
Copyright © 2020-2023  润新知