Armando
Armando

Reputation: 309

How to get field value from a model from another model in Odoo?

I'm having some trouble to understand how to get field values from another model.

I added a custom field in res.partner module by making a custom module:

class custom_partner_fields(osv.osv):
_inherit = 'res.partner'

_columns = {
'RTN': fields.char('RTN Numerico'),
}

_defaults = {

}
custom_partner_fields()

Then I create a custom xml for the form view when creating a new customer and now I can see RTN field in the customer create form.

Now I want this new field to appear when making a new quotation/sale order. I would like it to get its value when I select my customer (I believe onchange function should be use but don't know how to use that!),so what I did was create a custom module for it:

class custom_saleorder_fields(osv.osv):

_inherits = 'sale.order'

_columns = {
'partner_rtn': fields.char('RTN'),
}
custom_saleorder_fields()

I believe I need to use something like a function or relational field for this but what I've tried hasn't worked yet.

Then, I created the custom view form the sale order form view and adds my partner_field.

Now, I would like to know how can I access the specific RTN value from res.partner module from custom_saleorder_fields based on the selected customer.

On the other hand, the main purpose of this new value is to displayed in the sale workflow and also print it in a report.

Upvotes: 3

Views: 10633

Answers (2)

annadurai
annadurai

Reputation: 11

bring modelA fields in modelB by relatiional fields eg use many2one field in another model :

from openerp import models, fields, api

class partsproviderclass(models.Model):

_name='partsprovider.vechicle'
#_rec_name='parts_provider'

id=fields.Integer()
parts_provider=fields.Many2many('supplier.car', string="Parts provider")
parts_name=fields.Many2many('selection.selection',string="Parts Name")
parts_price=fields.Float(string="Price of the Part")

class selectionsxample(models.Model): _name='selection.selection'

name=fields.Char('name',required=True) 
value=fields.Char('value',required=True)

Upvotes: 1

You need to add relational field in sale order model. Before applying code you should refer that documentation of odoo,

In the Odoo Field Doc you will know how fields.related works.

class custom_saleorder_fields(osv.osv):
    _inherits = 'sale.order'

    _columns = {
        'partner_rtn': fields.related('partner_id','RTN',type="char",relation="res.partner",string="RTN",store=True,readonly=True),
    }
custom_saleorder_fields()

Upvotes: 1

Related Questions