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.
我在 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.