xlsx 시트를 가져올 때 'RecursionError : maximum recursion depth exceeded'오류가 발생합니다. odoo v13을 사용하고 있습니다. 내 목표는 'log_status'가 'Confirmed'상태로 변경되면 할당 된 메서드 하나를 호출해야한다는 것입니다. 이를 위해이 메서드를 호출하는 쓰기 메서드를 사용하고 있습니다. 내 파이썬 코드는 다음과 같습니다.
@api.model
def write(self, vals):
record = super(Transaction_log, self).write(vals)
if 'log_status' in vals and vals.get('log_status') == 'Confirmed':
self.action_confirm()
return record
def action_confirm(self):
self.write({'log_status': 'Confirmed'})
self.action_performed.create({'log_status': 'Confirmed', 'trans_log': self.id,
'performed_by': self.env.user.id, 'performed_time': datetime.now()})
return True
미리 감사드립니다.
개선 할 수있는 항목은 거의 없습니다.
api.model
으로 api.multi
.self.action_confirm()
메소드 내부에서 다시 write 메소드를 호출했는데 'log_status'가 'Confirmed'조건과 일치합니다. 따라서 재귀 적입니다.이를 피하기 위해 context
더미 플래그를 전달 하는 데 사용할 수 있습니다 .
다음 코드로 시도하십시오.
@api.multi
def write(self, vals):
record = super(Transaction_log, self).write(vals)
if 'log_status' in vals and vals.get('log_status') == 'Confirmed' and not self._context.get('by_pass_log_status'):
self.action_confirm()
return record
@api.multi
def action_confirm(self):
self.with_context('by_pass_log_status').write({'log_status': 'Confirmed'})
self.action_performed.create({'log_status': 'Confirmed', 'trans_log': self.id,
'performed_by': self.env.user.id, 'performed_time': datetime.now()})
return True
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다