我在合作伙伴表单中创建了按钮,以显示与其相关的另一个模型。与合作伙伴表格中的机会,会议,销售按钮相同的按钮显示其所有机会,会议,销售等。
代码如下所示:
型号:
from openerp import models, fields
from openerp import api
class res_partner(models.Model):
_inherit = 'res.partner'
service_ids = fields.One2many('calendar.service', 'partner_id', 'Calendar Services')
service_count = fields.Integer('Services', compute='_count_services')
@api.one
@api.depends('service_ids')
def _count_services(self):
self.service_count = len(self.service_ids)
动作:
<record id="action_calendar_service" model="ir.actions.act_window">
<field name="name">Services</field>
<field name="res_model">calendar.service</field>
<field name="view_mode">tree,calendar,form</field>
<field name="view_id" ref="view_calendar_service_tree"/>
<field name="search_view_id" ref="view_calendar_service_search"/>
<field name="help" type="html">
<p class="oe_view_nocontent_create">
Click to create new service.
</p>
</field>
</record>
查看:
<record id="view_partners_form_service1" model="ir.ui.view">
<field name="name">view.res.partner.form.crm.inherited1</field>
<field name="model">res.partner</field>
<field name="inherit_id" ref="crm.view_partners_form_crm1"/>
<field eval="18" name="priority"/>
<field name="arch" type="xml">
<button name="schedule_meeting" position="after">
<button
class="oe_inline oe_stat_button"
attrs="{'invisible': [('customer', '=', False)]}"
name="%(calendar_service.action_calendar_service)d"
icon="fa-star"
type="action"
context="{'search_default_partner_id': active_id}">
<field name="service_count" string="Services" widget="statinfo"/>
</button>
</button>
</field>
</record>
除了一件事,一切都适用于那个按钮。它不会使用partner_id
(按下按钮的那个)过滤结果,并打开所有'calendar.service'记录。但它应该只显示该特定合作伙伴的那些。 context="{'search_default_partner_id': active_id}">
需要更多内容吗?我在这里缺少什么?
答案 0 :(得分:1)
终于找到了遗漏的东西。我需要添加这一行:
<field name="partner_id" filter_domain="[('partner_id','child_of',self)]"/>
在我的模型搜索视图中。没有它,它不使用search_default过滤器。