上下文不会更新类型的值

时间:2018-05-25 11:27:31

标签: odoo-8 odoo odoo-10 odoo-9 odoo-11

我在表单视图中有这两个按钮:

<button name="%(action_view_task_make_situation)d" string="Create work situation" type="action" states="open" context="{'type': 'situation'}"/>
<button name="%(action_make_general_final_count)d" string="Create Final General Count" type="action" states="done" context="{'type': 'final_count'}"/> 

采取以下行动:

<record id="action_view_task_make_situation" model="ir.actions.act_window">
    <field name="name">Make Situation</field>
    <field name="res_model">task.make.situation</field>
    <field name="type">ir.actions.act_window</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
    <field name="target">new</field>
    <field name="context">{'type':True}</field>
</record>
<record id="action_make_general_final_count" model="ir.actions.act_window">
    <field name="name">Make General Final Count</field>
    <field name="res_model">task.make.situation</field>
    <field name="type">ir.actions.act_window</field>
    <field name="view_type">form</field>
    <field name="view_mode">form</field>
    <field name="target">new</field>
    <field name="context">{'type':False}</field>
</record>   

现在我有task.make.situation型号:

class TaskMakeSituation(models.TransientModel):

    _name = "task.make.situation"

    type = fields.Char(compute = "compute_type", string="Type", readonly= True)

    @api.multi
    def compute_type(self):
        if self._context.get('type', True):
            return "situation"
        else:
            return "final_count"

但是当我点击其中一个按钮时,向导会显示一个空的type字段。

2 个答案:

答案 0 :(得分:0)

在输入上下文之前尝试添加“default_”,如下所示:    context="{'default_type': False}" 并且只使用boolean,因为你在compute_type中验证boolean,也在视图中进行此操作。

答案 1 :(得分:0)

计算方法必须&#34;写&#34;他们的价值直接进入记录:

@api.multi
def compute_type(self):
    context_type = self._context.get('type', True)
    for record in self:
        if context_type:
            record.type = "situation"
        else:
            record.type = "final_count"

除此之外,您的解决方案应该只使用字段type的默认值。首先将您的字段更改为普通的字段:

type = fields.Char(string="Type", readonly=True)

小提示:在此示例中,参数string不是必需的,因为较新的Odoo版本将使用字段名称生成标签(字符串成为字段标签),例如:name将获取名称或者partner_id将获得合作伙伴(_id将被删除)。

现在更改按钮上下文,使用default_type

<button name="%(action_view_task_make_situation)d" 
    string="Create work situation" type="action" states="open" 
    context="{'default_type': 'situation'}"/>
<button name="%(action_make_general_final_count)d"
    string="Create Final General Count" type="action" states="done"
    context="{'default_type': 'final_count'}"/>

前缀default_与字段名称结合使用,将在以后的默认提取中用于创建记录。