Skip to Content
Menu
Musisz się zarejestrować, aby móc wchodzić w interakcje z tą społecznością.
To pytanie dostało ostrzeżenie
7 Odpowiedzi
11980 Widoki

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!!!

Awatar
Odrzuć
Autor

hey, why did you remove the answer? :|

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... :)

Najlepsza odpowiedź

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',
}

Awatar
Odrzuć
Autor

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...

Autor

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

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

Powiązane posty Odpowiedzi Widoki Czynność
2
cze 20
5526
3
gru 23
20387
3
sty 24
9022
0
kwi 23
1666
2
mar 23
10142