odoo初学者代码总结–hr.contract/方法(7)

hr.contract/方法

提前声明:本人是odoo萌新,python也只有基础,欢迎大神指点,有所不足之处还请见谅
此为本萌新学习归纳所用,毕竟有输出才有动力,废话不多说,咱们开始吧:

前几章我们一起阅读了hr.contract的字段部分,接下来我们就要开始阅读本文件的方法部分了.有关修饰器的讲解,请移步(参考手册–修饰器)

@api.depends('employee_id.resource_calendar_id', 'resource_calendar_id')
    def _compute_calendar_mismatch(self):
        for contract in self:
            contract.calendar_mismatch = contract.resource_calendar_id != contract.employee_id.resource_calendar_id
  • @api.depends(‘xxxx’)(用于计算字段,可以用于标记需要被触发的计算.使用此装饰器应该注意计算字段必须被赋值,否则便会报错)

此修饰器是配合字段一起使用的,我们翻看前面定义的字段,会发现调用

calendar_mismatch = fields.Boolean(compute='_compute_calendar_mismatch')

那我们开始解读方法吧:

def _compute_calendar_mismatch(self):
        for contract in self:
            contract.calendar_mismatch = contract.resource_calendar_id != contract.employee_id.resource_calendar_id
  • self:是一个记录集,将其便利
  • 下面的表示**calendar_mismatch **的值=resource_calendar_id !=employee_id.resource_calendar_id

举一个简单的例子:a=1!=2,此时a的值为True,a=1!=1,此时的a为False
我们现在只看背后的逻辑,至于业务需求,还是留给以后吧(其实是现在的能力不够)

    def _expand_states(self, states, domain, order):
        return [key for key, val in type(self).state.selection]

此为python的列表推导式:

  • [表达式 for 变量 in 列表]

我们不难看出,是将type(self).state.selection的值以此遍历出来他的key和val,然后返回其中的key值

我们紧接着往下读:

@api.onchange('employee_id')
    def _onchange_employee_id(self):
        if self.employee_id:
            self.job_id = self.employee_id.job_id
            self.department_id = self.employee_id.department_id
            self.resource_calendar_id = self.employee_id.resource_calendar_id
            self.company_id = self.employee_id.company_id
  • @api.onchange(‘xxxx’)(用于系统在用户进行交互时自动更新相关联的字段,当参数字段的值变化时,抛出提示,但并不会阻止用户的行为)

  • employee_id在前端页面发生改变时,则调用方法体里的方法.

  • 如果self.employee_id有值,则给一些字段赋相应的值,换句话说,就当你输入的值存在关联关系,并且不为空时,则将关联表中的数据调出然后给赋值.

好的,今日份就到这里,因为看到下方有一个大片的方法,还是草草结束,另起新篇来讲述吧.感谢大家,我们下篇见OuO

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值