youta
youta

Reputation: 391

Odoo - How to read/get field's value in another module

I've added a new field inside hr.employee module .

The field is : 'available_tickets': fields.float("Available Tickets")

I need to read this field's value in another module let's say travel.request module.

But it didn't work, can anyone help me to fix it.

class travel_request(osv.osv):
    _name = 'travel.request'

    def _get_available_tickets(self, cr, uid, context=None):
        ticket_obj = self.pool.get('hr.employee')
        ticket_ids = self.pool.get('hr.employee').search(cr, uid, [])
        for t_id in ticket_ids:
            ticket = ticket_obj.browse(cr, uid, t_id, context=context)
        available_tickets = ticket.available_tickets
        return available_tickets 

     _columns = {
         'available_tickets_id': fields.many2one('hr.employee', "Number of Available Tickets", readonly=True),
     }
     _defaults = {
         'available_tickets_id': _get_available_tickets,
     }


class hr_employee(osv.osv):
    _inherit = "hr.employee"
    _columns = {
        'available_tickets': fields.float("Available Tickets"),
     }

Upvotes: 2

Views: 3675

Answers (1)

Danila Ganchar
Danila Ganchar

Reputation: 11312

If you need just read value from many2one object you can use related field. Here example:

class hr_employee(osv.osv):
    _inherit="hr.employee"
    _columns = {
        'available_tickets': fields.float("Available Tickets"),
    }


class travel_request(osv.osv):
    _name = 'travel.request'
    _columns = {
        'employee_id': fields.many2one('hr.employee', 'Employee',),
        'employee_tickets': fields.related('employee_id', 'available_tickets', string='Available Tickets', type='float'),
    }

Related fields is readonly. JFYI osv is deprecated (/odoo/openerp/osv/osv.py). It is will be work, but you can use "compute" method and new API for models.

Upvotes: 2

Related Questions