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

I have two classes:

class first_class(models.Model):
_name = 'tbl1'
code = fields.Char('Code', size=3, required=True)
description = fields.Char('Description', size=40, required=True)

class second_class(models.Model):
_name = 'tbl2'
_inherits = {'tbl1': 'id_tbl1'}

id_tbl1 = fields.Many2one('tbl1')
employee = fields.Char('Name', size=40, required=True)

When I create a new row with the first class, I would like to go directoly to the second class with the id I've just created. That is I would like to pass the id of tbl1 to tbl2.

Is it possible?

This is my XML file:

<?xml version="1.0" encoding="utf-8"?>
<openerp>
<data>

<record id="view_mymodule_tbl1_tree" model="ir.ui.view">
<field name="name">mymodule.tbl1.tree.view</field>
<field name="model">tbl1</field>
<field name="arch" type="xml">
<tree string="Bridge" export="false">
<field name="id"/>
<field name="code"/>
<field name="description"/>
</tree>
</field>
</record>


<record id="view_mymodule_tbl1_form" model="ir.ui.view">
<field name="name">mymodule.tbl1.form.view</field>
<field name="model">tbl1</field>
<field name="arch" type="xml">
<form string="Bridge" duplicate="false">
<header>
<button name="%(action_mymodule_tbl2)d" type="action" string="Submit" />
</header>
<sheet>
<group>
<field name="code"/>
<field name="description"/>

</group>
</sheet>
</form>
</field>
</record>

<record id="action_mymodule_tbl1" model="ir.actions.act_window">
<field name="name">action tbl1</field>
<field name="res_model">tbl1</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="search_view_id" eval="False"/>
</record>

<menuitem action="action_mymodule_tbl1" id="menu_action_mymodule_tbl1" parent="mail.mail_feeds" sequence="140"/>

<record id="view_mymodule_tbl2_tree" model="ir.ui.view">
<field name="name">mymodule.tbl2.tree.view</field>
<field name="model">tbl2</field>
<field name="arch" type="xml">
<tree string="Mymodule" export="false">
<field name="id_tbl1" readonly="1"/>
<field name="employee
</tree>
</field>
</record>

<record id="view_mymodule_tbl2_form" model="ir.ui.view">
<field name="name">mymodule.tbl2.form.view</field>
<field name="model">tbl2</field>
<field name="arch" type="xml">
<form string="Mymodule" duplicate="false">
<group>
<field name="id_tbl1" readonly="1"/>
<field name="employee"/>
</group>
</form>
</field>
</record>
 
<record id="action_mymodule_tbl2" model="ir.actions.act_window">
<field name="name">Insert</field>
<field name="res_model">tbl2</field>
<field name="view_type">form</field>
<field name="view_mode">tree,form</field>
<field name="view_id" ref="view_mymodule_tbl2_form" />
<field name="target">new</field>
</record>

<menuitem action="action_mymodule_tbl2" id="menu_action_mymodule_tbl2" parent="mail.mail_feeds" sequence="150"/>


</data>
</openerp>

Awatar
Odrzuć
Najlepsza odpowiedź

EDIT:

in your code replace:

<button name="%(action_mymodule_tbl2)d" type="action" string="Submit" /> 

with

<button name="open_second_class" type="object" string="Submit" /> 


And in your class tbl1 add this method:

@api.multi
def open_second_class(self):
ac = self.env['ir.model.data'].xmlid_to_res_id('YOURMODULE.view_mymodule_tbl2_form', raise_if_not_found=True)
tbl1 = False
for o in self:
tbl1 = o.id
result = {
'name': '2nd class',
'view_type': 'form',
'res_model': 'tbl2',
'view_id': ac,
'context': {'default_id_tbl1': tbl1},
'type': 'ir.actions.act_window',
'view_mode': 'form'
}
return result

regards,
Disha


Awatar
Odrzuć
Autor

Thank you for your reply, Disha. Could you make an example based on my code, please?

I edited the answer for code example. please check.

Autor

I don't know how to thank you: it works!

Najlepsza odpowiedź

The idea is to  save it to the context dictionary, from the other class use context.get('id_of_table2',False)

Awatar
Odrzuć
Autor

Thank you for your reply. Could you make an example, please? I don't now how context works.

Najlepsza odpowiedź

Friend!!

Try to follow this example.

https://openerpdev.wordpress.com/2012/01/31/openerp-one2many-many2one-fields-example/

Regards

Awatar
Odrzuć
Autor

Thnak you for your help, but I don't think that this is my case.

Najlepsza odpowiedź

In second class create method and call (Refer Product Module product.py File)

Example:-

    def _get_tbl1_ids(self):
tbl1_ids = self.env['tbl1'].search([('id_tbl1', 'in', self.ids)])
return list(set(tbl1_ids))
Awatar
Odrzuć
Autor

I'm sorry, but I'm not able to call this as a related field in Odoo 8. Could you hel me, please?

Autor Najlepsza odpowiedź

Sorry, but I'm not able to solve this problem yet.

Any help, please?

Awatar
Odrzuć
Powiązane posty Odpowiedzi Widoki Czynność
1
mar 15
3241
2
lip 25
697
1
maj 16
5700
0
mar 25
1319
4
lut 25
2475