如果从其他操作创建,则强制字段值

时间:2016-01-30 09:48:38

标签: openerp odoo-8 odoo-9

我有一个继承自“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字段应该有一个默认值,而不会改变标准操作的行为?

非常感谢所有人。

马克

2 个答案:

答案 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

这符合我的要求:

  • 来自Employee操作,该操作没有'create_as_patient' 在其背景下,新创建的员工将不会拥有 默认部门设置。
  • 另一方面,如果我创建一个记录 我的患者行动,标志将出现,默认 部门将被添加到新记录中。

再次感谢jamin指出正确的方向: - )

马克