python - 如何将文件从 Odoo 中的向导附加到员工?
问题描述
我扩展了 hr 模块以在 Employee 表单中按下“存档”按钮时显示一个向导。该表格旨在为员工添加一些信息,包括一些文件。正如您在下一个代码中看到的那样,当从向导调用“action_cancel”方法时,“hr.cancelation_wizard”将“date_cancel”、“reason”和“documents_cancel_ids”添加到员工(向导表单中的按钮调用该方法) )。但是当按下该按钮时,它会显示以下错误:
2021-03-10 17:11:15,187 7702 ERROR odoo12 odoo.sql_db: bad query: INSERT INTO "hr_cancel_document" ("id", "create_uid", "create_date", "write_uid", "write_date", "attachment_id", "employee_id", "user_id") VALUES (nextval('hr_cancel_document_employee_id_fkey'), 2, (now() at time zone 'UTC'), 2, (now() at time zone 'UTC'), 699, 63, 2) RETURNING id
ERROR: insert or update on table "hr_cancel_document" violates foreign key constraint "hr_cancel_document_employee_id_fkey"
DETAIL: Key (employee_id)=(63) is not present in table "hr_employee".
这是我的代码:
class UtepdaHr(models.Model):
_inherit = 'hr.employee'
documents_cancel_ids = fields.One2many('hr.cancel_document',
'employee_id',
string="Documents")
date_cancel = fields.Date(string="Cancelation Date", required=True)
reason = fields.Selection(selection=[
('cancelation', 'Cancelation'),
('resign', 'Resign'),
('passing', 'Passed away'),
],required=True, string="Cancelation reason")
@api.multi
def toggle_active(self):
self.ensure_one()
if self.active==True:
return {
'name': 'Cancel employee',
'res_model': 'hr.cancelacion_wizard',
'view_mode': 'form',
'target': 'new',
'context': {
'default_employee_id': self.id
},
'type': 'ir.actions.act_window',
}
else:
self.active = True
self.reason= False
self.date_cancel= False
self.documents_cancel_ids = [(6, 0, [])]
return True
class CancelationDocument(models.Model):
_name = 'hr.cancel_document'
_description = 'Save some documents when the employeed leaves the company'
_inherits = {'ir.attachment': 'attachment_id'}
user_id = fields.Many2one('res.users',
'Uploaded by',
default=lambda self: self.env.user)
employee_id = fields.Many2one('hr.employee', string="Employee", ondelete="cascade")
@api.model
def create(self, vals):
if 'user_id' not in vals:
vals['user_id'] = self.env.user.id
return super(CancelationDocument, self).create(vals)
@api.onchange('datas_fname')
def _change_tipo(self):
self.name = self.datas_fname
class UtepdaHrCancelacionWizard(models.TransientModel):
_name = 'hr.cancelation_wizard'
_description = 'Wizard intended to add some information to an Employee'
employee_id = fields.Many2one('hr.employee')
date_cancel = fields.Date(string="Cancelation Date", required=True)
reason = fields.Selection(selection=[
('cancelation', 'Cancelation'),
('resign', 'Resign'),
('passing', 'Passed away'),
],required=True, string="Cancelation reason")
documentw_ids = fields.One2many(
'hr.cancel_document',
'employee_id',
realted="employee_id.documents_cancel_ids")
def action_cancel(self):
if self.date_cancel and self.reason:
vals = {}
vals['date_cancel'] = self.date_cancel
vals['reason'] = self.reason
vals['active'] = False
if vals:
self.empleado_id.write(vals)
message="You deactivated the employee"
self.empleado_id.message_post(body=message, subtype="mail.mt_note")
解决方案
推荐阅读
- spring-boot - 有没有办法在不使用任何 IDE 的情况下从终端或控制台自动重新加载 maven spring-boot 项目?
- pandas - Pandas 列未正确更新
- google-apps-script - 在 Apps 脚本中,如何在 CardService 中动态更改下拉列表中的值?
- spring-boot - Spring JDBC UncategorizedSQLException
- python - VS Code 中使用 Python 在我的工作区中针对虚拟环境 (.venv) 的问题
- android - RecyclerView在重复提交列表时不显示所有数据
- c# - 有些库可以读取我的 JPEG 图像,但有些则不能。如何在不重新编码的情况下修复我的 JPEG 图像?
- grep - 在 freebsd 8.4 和 11.4 中,Grep 输出与 pexpect 不同
- python - python:根据条件旋转数据
- nginx - Baic auth 弹出窗口未显示 ingress-nginx