openerp - Copy one2many field SNAFU -
i need show record notebook project on notebook sheet , showed record not according project
my py :
class notebook_project(osv.osv): _name = "notebook.project" _description = "notebook project id" def onchange_project(self, cr, uid, ids, project, arg, context=none): if project : proj = self.pool.get('project.project').browse(cr, uid, project, context=context) return {'value': {'name': proj.name}} return {} _columns = { 'name' : fields.char('name', size=64), 'project' : fields.many2one('project.project', 'project'), 'notebook_project_lines' : fields.one2many('notebook.project', 'notebook_project_id', 'members lines'), 'notebook_project_id': fields.many2one('notebook.project', 'parent project', ondelete='cascade', select=true), 'member' : fields.many2one('hr.employee', 'members'), } notebook_project() class notebook_sheet(osv.osv): _name = "notebook.sheet" _description = "notebook project sheet" def onchange_notebook_project(self, cr, uid, ids, notebook_project, context=none): res = {} employee_lines = [] if not notebook_project : return {} if notebook_project : notebook_project_obj = self.pool.get('notebook.project').browse(cr, uid, notebook_project) p in notebook_project_obj.notebook_project_lines: employee_lines.append((0,0,{'notebook_sheet_lines':p.id }))#this dict contain keys fields of one2many field res['notebook_sheet_lines']=employee_lines return res def onchange_project(self, cr, uid, ids, project, context=none): if project : proj = self.pool.get('project.project').browse(cr, uid, project, context=context) return {'value': {'name': proj.name}} return {} #def create(self, cr, user, vals, context={}): #first model # notebook_project_obj = self.pool.get('notebook.project') #browse , o2m fields, according selected project(id) # notebook_project_lines = notebook_project_obj.browse(cr, user, ['notebook_project_id'])[0].lines #copy first o2m model second o2m model # line in notebook_project_lines : # vals['notebook_sheet_lines'].append([0, false, {'notebook_project_lines':line.employee_id.id,}]) # return super(notebook_sheet, self).create(cr, user, vals, context) _columns = { 'name' : fields.char('name', size=64), 'notebook_sheet_lines' : fields.many2many('notebook.project', 'notebook_project_sheet_rel', 'notebook_project', 'notebook_project_id'), 'notebook_project': fields.many2one('notebook.project', 'project id',domain=[('notebook_project_id','=',false)]), 'project' : fields.many2one('project.project', 'project'), 'member' : fields.many2one('hr.employee', 'members'), } notebook_sheet()
edited answer , mr. anoma . still not sure many2many , please kindly check it
do need change onhange event ? again in advance
first of please create link between notebook.sheet , notebook.project. there no link between these 2 models. add many2one relation notebook.sheet in notebook.project , change relation id in notebook_sheets_lines field. otherwise change relation type of notebook_sheet_lines many2many. change onchange_notebok_project() return {'value':{'notebook_sheet_lines':list_of_empoyeeids}}
no need add many2many in motebook_project.
Comments
Post a Comment