我有一个继承自“hr.employee”的模型,我有一个动作 仅显示特殊部门的员工。
我希望该列表顶部的“创建”按钮允许我这样做 在hr.employee中创建一个记录,部门字段已设置为该特殊部门。
当然另一个“创建”按钮,来自标准的“hr”模块, 不应该为部门设置默认值。
以下是模型:
# -*- coding: utf-8 -*-
from openerp import models, fields
class Patient(models.Model):
_inherit = 'hr.employee'
date_debut_contrat = fields.Date('Début Contrat de Prise en Charge')
date_fin_contrat = fields.Date('Fin Contrat de Prise en Charge')
这是行动:
<record id="action_liste_patients" model="ir.actions.act_window">
<field name="name">Patients</field>
<field name="res_model">hr.employee</field>
<field name="view_mode">kanban,tree,form</field>
<field name="domain">[('department_id.is_patients', '=', 'true')]</field>
</record>
我是否有办法告诉Odoo,在该操作中,department_id字段应该有一个默认值,而不会改变标准操作的行为?
非常感谢所有人。
马克
答案 0 :(得分:2)
您可以使用
<field name="context">{'department_id': 'special department'}</field>
现在,在创建Patient时,您可以在create()中从上下文中获取值并相应地执行操作。
答案 1 :(得分:0)
根据Jamin的评论,这是我应用的完整解决方案:
1)为动作添加上下文。上下文将具有一个名为的值 “create_as_patient”,这是真还是假。
# -*- coding: utf-8 -*-
from openerp import models, fields, api
class Patient(models.Model):
_inherit = 'hr.employee'
date_debut_contrat = fields.Date('Début Contrat de Prise en Charge')
date_fin_contrat = fields.Date('Fin Contrat de Prise en Charge')
@api.model
def create(self, vals):
if 'create_as_patient' in self.env.context:
if self.env.context['create_as_patient']:
departmentId = self.env['hr.department'].search([('is_patients', '=', True)], limit=1).id
if departmentId is not None:
vals['department_id'] = departmentId
record = super(Patient, self).create(vals)
return record
2)在我的模型的create()方法中,我从中获取值 上下文,如果它存在。然后我搜索“hr.department”模型 对于被标记为患者默认部门的部门。 然后,如果找到默认部门,我设置新记录 department_id到它。
.phtml
这符合我的要求:
再次感谢jamin指出正确的方向: - )
马克