Odoo Help

0

How to select one form, among multiple forms, to display in view on a button click?

By
Rizan Zaky
on 11/11/15, 4:44 AM 1,563 views

Hello I've got two forms in my view xml file, here's the code for it

<record model="ir.ui.view" id="myMod_form_view">
<field name="name">myMod.form</field>
<field name="model">test.myMod</field>
<field name="arch" type="xml">
<form string="My Form 1">
<sheet>
<group>
<field name="name"/>
</group>
</sheet>
</form>
</field>
</record>

<record model="ir.ui.view" id="myMod_conn_1_view">
<field name="name">myMod.form</field>
<field name="model">test.myMod</field>
<field name="arch" type="xml">
<form string="My Form 2">
<sheet>
<group string="Hello World">
</group>
</sheet>
</form>
</field>
</record>

this is the code for the button I use,

<button name='butClick' type='object' string="Click"/>

I want to return the second form to a view on a button click, I've written this code in the models.py

@api.multi
def butClick(self):
return {
'type': 'ir.actions.act_window',
'res_model': 'test.myMod',
'name': 'Testing',
'views': [[False, 'form']],
'res_id': myMod_conn_1_view,
'target' : 'new',
}

but this gives an error,

NameError: global name 'myMod_conn_1_view' is not defined


What can I do to display this second form on the button click??? Please help!!!

hey, why did you remove the answer? :|

Rizan Zaky
on 11/11/15, 8:39 PM

There were some issues with Arya's answer, only the last form was called from the above code, I fixed it with some help from Arya's answer... view_id = self.env['ir.model.data'].get_object_reference('module_name', 'myMod_conn_1_view') return { 'type': 'ir.actions.act_window', 'res_model': 'test.myMod', 'name': 'Testing', 'views': [[view_id[1], 'form']], 'target' : 'new', } thank you Arya... :)

Rizan Zaky
on 11/13/15, 1:38 AM
2
Sudhir Arya (SA)
On 11/11/15, 5:35 AM

Hi Rizan,

Your code is correct. You can pass IDs of your specific tree, form in views.

In res_id, you have to pass the ID of the test.myMod object if you want to show the record of that particular ID or if you want to show all the records, remove res_id.

@api.multi
def butClick(self):
view_ref = self.env['ir.model.data'].get_object_reference('module_name', 'xmlID_of_your_form_view')
return {
'type': 'ir.actions.act_window',
'res_model': 'test.myMod',
'name': 'Testing',
'views': view_ref and view_ref[1] or False,
# 'res_id': myMod_conn_1_view,
'target' : 'new',
}

Else you can directly use view_id instead of views in your return dictionary.

return {
'type': 'ir.actions.act_window',
'res_model': 'test.myMod',
'name': 'Testing',
'view_id': view_ref and view_ref[1] or False,
# 'res_id': myMod_conn_1_view,
'target' : 'new',
}

Hi Arya... thanks for the comment... can you please help me how to make the button click pick the second form? by default it's picking the first form...

Rizan Zaky
on 11/11/15, 5:38 AM

See my updated answer.

Sudhir Arya (SA)
on 11/11/15, 5:50 AM

hey Arya, I get an error ValueError: External ID not found in the system: myMod.myMod_conn_1_view

Rizan Zaky
on 11/11/15, 5:55 AM

Make sure you have given correct module name and XML ID.

Sudhir Arya (SA)
on 11/11/15, 5:59 AM

About This Community

This platform is for beginners and experts willing to share their Odoo knowledge. It's not a forum to discuss ideas, but a knowledge base of questions and their answers.

Register

Odoo Training Center

Access to our E-learning platform and experience all Odoo Apps through learning videos, exercises and Quizz.

Test it now

Question tools

1 follower(s)

Stats

Asked: 11/11/15, 4:44 AM
Seen: 1563 times
Last updated: 11/14/15, 7:55 AM