Odoo14中的逆計算inverse方法屬性值用法——由compute字段的值逆向修改其依賴值

Odoo14inverse方法屬性值用法

當透過 compute 屬性指定方法,以根據相依值計算目前欄位值時,通常也應定義此計算的反向操作——根據目前欄位值變更相依值。

    例如:開始日期 + 持續時間 = 結束日期,我們用這個來取得結束日期。

    如果使用者指定開始日期和結束日期,則 duration = 結束日期 - 開始日期。實作此邏輯的方法,是 inverse 屬性值所指向的方法。

   #定義結束日期欄位。結束日期由開始日期加上持續時間決定。若要設定結束日期,您需要自行計算持續時間。
    end_date = fields.Date(string="結束日期", store=True,
                           compute='_get_end_date', inverse='_set_end_date')
    #「取得結束日期」事件的回應函式:計算結束日期
    @api.depends('start_date', 'duration')
    def _get_end_date(self):
        for r in self:
            if not (r.start_date and r.duration):
                r.end_date = r.start_date
                continue
            start = fields.Datetime.from_string(r.start_date)
            duration = timedelta(days=r.duration, seconds=-1)
            r.end_date = start + duration

    #「設定結束日期」事件的回應函式:計算並設定持續時間
    def _set_end_date(self):
        for r in self:
            if not (r.start_date and r.end_date):
                continue
            start_date = fields.Datetime.from_string(r.start_date)
            end_date = fields.Datetime.from_string(r.end_date)
            r.duration = (end_date - start_date).days + 1

关于我们

​我们致力于帮助中小企业实现数字化转型,我们的团队由一群充满激情和创新思维的专业人士组成,他们具备丰富的行业经验和技术专长。

扫一扫获取顾问以及手册

归档
登入 發表評論
odoo13和14如何在[res.partner]模型新增欄位?
odoo14開發