如何解决Odoo 12:如何防止执行默认字段方法
我安排了一个在每个月的1号执行的cron,目的是根据所有员工的标签分配休假。这是我的代码示例:
for leave in leave_type_ids:
for employee_tag in employee_tag_ids:
values = {
'name': 'Allocation mensuelle %s %s' % (now.strftime('%B'),now.strftime('%Y')),'holiday_status_id': leave.id,'number_of_days': employee_tag.allocation,'holiday_type': 'category','category_id': employee_tag.id,}
try:
self.create(values).action_approve()
except Exception as e:
_logger.critical(e)
我想指出,self是'hr.leave.allocation'的实例。
问题是当我创建记录时,字段employee_id会自动用用户/员工OdooBot(在cron中执行程序的人)填充,而这还不是全部,为员工OdooBot分配了叶子。
此行为是由于odoo本机模块中的那些代码造成的:
def _default_employee(self):
return self.env.context.get('default_employee_id') or self.env['hr.employee'].search([('user_id','=',self.env.uid)],limit=1)
employee_id = fields.Many2one(
'hr.employee',string='Employee',index=True,readonly=True,states={'draft': [('readonly',False)],'confirm': [('readonly',False)]},default=_default_employee,track_visibility='onchange')
所以我的问题是,当它是cron时如何防止这种情况,而在Form视图中将其设置为normal?
“employé”字段此处为空(如下图所示),因为它是按标签分配的。
解决方法
您必须遍历hr.employee
,因为您可以执行以下任一操作:
self.with_context({'default_employee_id': employee.id}).create(...)
OR
self.sudo(employee.id).create(...)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。