上下文不更新类型的值
context doesn't update value of type
我在表单视图中有这两个按钮:
<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
字段。
只需尝试在输入上下文之前添加 "default_",如下所示:
context="{'default_type': False}"
并且只使用布尔值,因为您在 compute_type 中验证布尔值,也在视图中进行验证。
计算方法必须"write"将它们的值直接写入记录中:
@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版本将使用字段名来生成标签(字符串成为字段标签)例如:名称将得到名称或 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_
与字段名称结合使用,将在以后用于创建记录的默认提取中使用。
我在表单视图中有这两个按钮:
<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
字段。
只需尝试在输入上下文之前添加 "default_",如下所示:
context="{'default_type': False}"
并且只使用布尔值,因为您在 compute_type 中验证布尔值,也在视图中进行验证。
计算方法必须"write"将它们的值直接写入记录中:
@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版本将使用字段名来生成标签(字符串成为字段标签)例如:名称将得到名称或 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_
与字段名称结合使用,将在以后用于创建记录的默认提取中使用。