打开ERP。从树中打开一个表格,但从其他相关领域
OpenERP. Open from tree a form but from other related field
我正在为 event.event 构建自定义视图,其中包含 registration_ids 字段的树。通常,当我单击树元素时,event.regitration 模型表单会在弹出窗口中打开。
所以,对于我的 objective,我想改变这种行为,在这种情况下打开与 event.registration by partner_id 字段相关的 res.partner。
这是我拥有的:
<record id="tutorship_course_form" model="ir.ui.view">
<field name="name">tutorship.course.form</field>
<field name="model">event.event</field>
<field name="arch" type="xml">
<form string="Curso" version="7.0">
<sheet>
<label for="event_type" string="Curso"/>
<field name="event_type" readonly="1" />
<label for="date_begin" string="Fecha"/>
<field name="date_begin" readonly="1" />
<label for="city" string="Ciudad"/>
<field name="city" readonly="1" />
<field name="registration_ids" colspan="3">
<tree>
<field name="firstname" />
<field name="lastname" />
<field name="email" />
</tree>
</field>
</sheet>
</form>
</field>
</record>
<record id="tutorship_courses_tree" model="ir.ui.view">
<field name="name">tutorship.courses.tree</field>
<field name="model">event.event</field>
<field name="arch" type="xml">
<tree string="Cursos">
<field name="event_type" string="Curso" />
<field name="date_begin" string="Fecha" />
<field name="city" string="Ciudad" />
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_courses_view">
<field name="name">Cursos</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">event.event</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('visible','=',1)]</field>
<field name="view_id" ref="tutorship_courses_tree" />
</record>
<record id="action_for_courses_tree_view" model="ir.actions.act_window.view">
<field name="sequence" eval="0" />
<field name="view_mode">tree</field>
<field name="view_id" ref="tutorship_courses_tree"/>
<field name="act_window_id" ref="action_courses_view"/>
</record>
<record id="action_for_courses_form_view" model="ir.actions.act_window.view">
<field name="sequence" eval="1" />
<field name="view_mode">form</field>
<field name="view_id" ref="tutorship_course_form"/>
<field name="act_window_id" ref="action_courses_view"/>
</record>
我还不清楚如何获取它。这可能吗?
提前致谢
您不能使用 ORM 方法和 XML 来做到这一点。我想您必须使用 JavaScript 才能实现这一点。
在你的情况下我会做的是在树的每一行添加一个按钮(只有一个图标,或者如果你愿意,可以使用字符串 Open partner)调用相应的合作伙伴表单:
XML 代码(在你的树中)
<button name="open_partner_form" type="object" icon="icon_you_want" help="Open partner info"/>
Python 代码(在 event.registration
模型内)
@api.multi
def open_partner_form(self):
form_view_id = self.env.ref(
'base.view_partner_form').id
for event_registration in self:
return {
'name': _('%s') % event_registration.partner_id,
'view_type': 'form',
'view_mode': 'form',
'res_id': event_registration.partner_id.id,
'views': [(form_view_id, 'form'), ],
'res_model': 'res.partner',
'type': 'ir.actions.act_window',
'target': 'current',
'flags': {'action_buttons': True},
}
如果对您有帮助,如果您将(在XML视图中)context="{'form_view_ref': 'module_name.xml_form_view_id'}"
添加到one2many字段(registration_ids
),您将能够select要打开的表格...但是此表格必须属于 registration_ids
commodel 的同一型号(我认为是 event.registration
)。
最后我用下一个代码解决了 v7:
- 如@forvas 所说xml 在树视图中添加了按钮
<button name="open_res_partner_form" type="object" />
- 在event.registration模型中定义动作函数
def open_res_partner_form(self, cr, uid, ids, context=None):
event_registration = self.browse(cr, uid, ids[0], context)
view_id = self.pool.get('ir.ui.view').search(cr, uid, [('name', '=', 'name_of_the_form_view')])
return {
'name': 'Example name',
'view_type': 'form',
'view_mode': 'form',
'res_id': event_registration.partner_id.id,
'view_id': view_id,
'res_model': 'res.partner',
'type': 'ir.actions.act_window',
'target': 'current',
'flags': {'action_buttons': True},
}
我正在为 event.event 构建自定义视图,其中包含 registration_ids 字段的树。通常,当我单击树元素时,event.regitration 模型表单会在弹出窗口中打开。
所以,对于我的 objective,我想改变这种行为,在这种情况下打开与 event.registration by partner_id 字段相关的 res.partner。
这是我拥有的:
<record id="tutorship_course_form" model="ir.ui.view">
<field name="name">tutorship.course.form</field>
<field name="model">event.event</field>
<field name="arch" type="xml">
<form string="Curso" version="7.0">
<sheet>
<label for="event_type" string="Curso"/>
<field name="event_type" readonly="1" />
<label for="date_begin" string="Fecha"/>
<field name="date_begin" readonly="1" />
<label for="city" string="Ciudad"/>
<field name="city" readonly="1" />
<field name="registration_ids" colspan="3">
<tree>
<field name="firstname" />
<field name="lastname" />
<field name="email" />
</tree>
</field>
</sheet>
</form>
</field>
</record>
<record id="tutorship_courses_tree" model="ir.ui.view">
<field name="name">tutorship.courses.tree</field>
<field name="model">event.event</field>
<field name="arch" type="xml">
<tree string="Cursos">
<field name="event_type" string="Curso" />
<field name="date_begin" string="Fecha" />
<field name="city" string="Ciudad" />
</tree>
</field>
</record>
<record model="ir.actions.act_window" id="action_courses_view">
<field name="name">Cursos</field>
<field name="type">ir.actions.act_window</field>
<field name="res_model">event.event</field>
<field name="view_mode">tree,form</field>
<field name="domain">[('visible','=',1)]</field>
<field name="view_id" ref="tutorship_courses_tree" />
</record>
<record id="action_for_courses_tree_view" model="ir.actions.act_window.view">
<field name="sequence" eval="0" />
<field name="view_mode">tree</field>
<field name="view_id" ref="tutorship_courses_tree"/>
<field name="act_window_id" ref="action_courses_view"/>
</record>
<record id="action_for_courses_form_view" model="ir.actions.act_window.view">
<field name="sequence" eval="1" />
<field name="view_mode">form</field>
<field name="view_id" ref="tutorship_course_form"/>
<field name="act_window_id" ref="action_courses_view"/>
</record>
我还不清楚如何获取它。这可能吗?
提前致谢
您不能使用 ORM 方法和 XML 来做到这一点。我想您必须使用 JavaScript 才能实现这一点。
在你的情况下我会做的是在树的每一行添加一个按钮(只有一个图标,或者如果你愿意,可以使用字符串 Open partner)调用相应的合作伙伴表单:
XML 代码(在你的树中)
<button name="open_partner_form" type="object" icon="icon_you_want" help="Open partner info"/>
Python 代码(在 event.registration
模型内)
@api.multi
def open_partner_form(self):
form_view_id = self.env.ref(
'base.view_partner_form').id
for event_registration in self:
return {
'name': _('%s') % event_registration.partner_id,
'view_type': 'form',
'view_mode': 'form',
'res_id': event_registration.partner_id.id,
'views': [(form_view_id, 'form'), ],
'res_model': 'res.partner',
'type': 'ir.actions.act_window',
'target': 'current',
'flags': {'action_buttons': True},
}
如果对您有帮助,如果您将(在XML视图中)context="{'form_view_ref': 'module_name.xml_form_view_id'}"
添加到one2many字段(registration_ids
),您将能够select要打开的表格...但是此表格必须属于 registration_ids
commodel 的同一型号(我认为是 event.registration
)。
最后我用下一个代码解决了 v7:
- 如@forvas 所说xml 在树视图中添加了按钮
<button name="open_res_partner_form" type="object" />
- 在event.registration模型中定义动作函数
def open_res_partner_form(self, cr, uid, ids, context=None):
event_registration = self.browse(cr, uid, ids[0], context)
view_id = self.pool.get('ir.ui.view').search(cr, uid, [('name', '=', 'name_of_the_form_view')])
return {
'name': 'Example name',
'view_type': 'form',
'view_mode': 'form',
'res_id': event_registration.partner_id.id,
'view_id': view_id,
'res_model': 'res.partner',
'type': 'ir.actions.act_window',
'target': 'current',
'flags': {'action_buttons': True},
}