Passa al contenuto
Menu
È necessario essere registrati per interagire con la community.
La domanda è stata contrassegnata
8 Risposte
16055 Visualizzazioni

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>

Avatar
Abbandona
Risposta migliore

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


Avatar
Abbandona
Autore

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.

Autore

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

Risposta migliore

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

Avatar
Abbandona
Autore

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

Risposta migliore

Friend!!

Try to follow this example.

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

Regards

Avatar
Abbandona
Autore

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

Risposta migliore

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))
Avatar
Abbandona
Autore

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

Autore Risposta migliore

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

Any help, please?

Avatar
Abbandona
Post correlati Risposte Visualizzazioni Attività
1
mar 15
2789
1
mag 16
4834
0
mar 25
425
4
feb 25
812
0
gen 25
2640