在我的模型中,我有一个计算字段,该字段提供了该用户的有效合约的ID:
id_ultimo_contratto = fields.Integer(compute="_compute_last_contratto", store=True)
这是我用来计算id的函数(正确的值是正确的):
@api.multi
@api.depends()
def _compute_last_contratto(self):
id_utenza=self.id
contratto_attivo = ''
for AttivitaSvoltaEE in self.env['utilitypower.attivitasvolta_ee'].search([('id_utenza_ee','=',id_utenza)]):
id_attivita = AttivitaSvoltaEE.id
for Contratto in self.env['utilitypower.contratti_ee'].search([('attivitasvolte_ids','=',id_attivita)]):
if Contratto.stato==1:
#find it :
id_contratto_attivo = Contratto.id
id_ultima_attivita = id_attivita
contratto_attivo=Contratto.nome_contratto
for UtenzeEE in self:
UtenzeEE.last_contratto = contratto_attivo
UtenzeEE.id_ultimo_contratto = id_contratto_attivo
UtenzeEE.id_ultima_attivita = id_ultima_attivita
我在智能按钮中使用此id,我想通过智能按钮上链接的操作打开合同视图:
<button class="oe_stat_button"
icon = "fa-file-text-o"
type = "action"
name="action_view_contrattoattivo_ee"
options="{}">
<span><field name="id_ultimo_contratto"/></span>
</button>
问题是我无法理解如何在操作的域/上下文中将id_ultimocontrat传递给field_value:
<act_window id="action_view_contrattoattivo_ee"
name="Contratto Attivo"
res_model="utilitypower.contratti_ee"
view_type="tree,form"
view_mode="tree"
domain="[]"
/>
如何将计算出的字段传递到域中?以及我如何指代最终模型的ID(odoo)?
答案 0 :(得分:1)
您可以使用以下按钮代码
<button class="oe_stat_button"
icon = "fa-file-text-o"
type = "object"
name="action_view_contrattoattivo_ee"
options="{}">
<span><field name="id_ultimo_contratto"/></span>
在py文件中,编写以下代码
@api.multi
def action_view_contrattoattivo_ee(self):
action = self.env.ref('module_name.action_view_contrattoattivo_ee')
result = action.read()[0]
result['domain'] = domain
return result
module_name:应该是您在其中编写了操作的模块。 域:您要指定的域。
您可以给整数字段不存储,如下所示:
id_ultimo_contratto = fields.Integer(compute="_compute_last_contratto")
@api.multi
def _compute_last_contratto(self):
id_utenza=self.id
contratto_attivo = ''
for AttivitaSvoltaEE in self.env['utilitypower.attivitasvolta_ee'].search([('id_utenza_ee','=',id_utenza)]):
id_attivita = AttivitaSvoltaEE.id
for Contratto in self.env['utilitypower.contratti_ee'].search([('attivitasvolte_ids','=',id_attivita)]):
if Contratto.stato==1:
#find it :
id_contratto_attivo = Contratto.id
id_ultima_attivita = id_attivita
contratto_attivo=Contratto.nome_contratto
for UtenzeEE in self:
UtenzeEE.last_contratto = contratto_attivo
UtenzeEE.id_ultimo_contratto = id_contratto_attivo
UtenzeEE.id_ultima_attivita = id_ultima_attivita
请注意,如果您通过按钮调用任何操作,则必须编写以下代码
<button class="oe_stat_button"
icon = "fa-file-text-o"
type = "action"
name="%(action_view_contrattoattivo_ee)d"
options="{}">
<span><field name="id_ultimo_contratto"/></span>