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升序排列。git

  • _constraints:自定義約束條件模型建立/編輯數據時觸發,約束未經過彈出錯誤提示,拒絕建立/編輯。

    格式:: _constraints = [(method, 'error message', [field1, ...]), ...]
    method檢查方法。返回True | False
    error message:不符合檢查條件時(方法返回False)彈出的錯誤信息
    [field1, ...]:字段名列表,這些字段的值會出如今錯誤消息中。sql

    _sql_constraints:數據庫約束。數據庫

    例:_sql_constraints = [ ('number_uniq', 'unique(number, code)', 'error message') ]
    會在數據庫添加約束:
    CONSTRAINT number_uniq UNIQUE(number, code)dom

  • _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_relui

  • 例: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爲計算函數。code

  • 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)

相關文章
相關標籤/搜索