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