zoukankan      html  css  js  c++  java
  • Odoo中的逆计算——由compute字段的值逆向修改其依赖值

    转载请注明原文地址:https://www.cnblogs.com/ygj0930/p/10826000.html

        当通过compute属性指定方法,根据依赖值计算得到当前字段值时。一般也要制定这个计算的逆运算——根据当前字段值,改变依赖值。

        比如:开始日期+持续时间=结束日期,我们有这个可以得到结束日期。

        如果用户指定了开始日期和结束日期,那么持续时间=结束日期-开始日期,实现这个逻辑的方法就是inverse属性值指向的方法。

       #定义结束日期字段,结束日期由开始+持续,而设置结束日期,则需要自行计算出持续日期
        end_date = fields.Date(string="End Date", 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
  • 相关阅读:
    iOS7,iOS8和iOS9的区别
    NSUrl
    什么是 MIME TYPE?
    TCP协议与UDP协议的区别
    KVC、KVO、NSNotification、delegate 总结及区别
    cocoapods 安装过程及常见问题
    素材丶资料
    方法 笔记(二)
    UIWebView UITextView
    在oj中Python的循环输入问题解决
  • 原文地址:https://www.cnblogs.com/ygj0930/p/10826000.html
Copyright © 2011-2022 走看看