Odoo - 如何 read/get 另一个模块中的字段值

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

我在 hr.employee 模块中添加了一个新字段。

字段是:'available_tickets': fields.float("Available Tickets")

我需要在另一个模块中读取该字段的值,比方说 travel.request 模块。

但是没有用,谁能帮我解决一下。

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"),
     }

如果您只需要从 many2one 对象中读取值,您可以使用 related 字段。这里的例子:

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

相关 字段是只读。 JFYI osv 已弃用 (/odoo/openerp/osv/osv.py)。它将起作用,但您可以使用 "compute" method and new API for models.