Openerp 复制one2many字段SNAFU
我需要在笔记本纸上显示笔记本项目的记录,但显示的记录与项目不符 我的朋友:Openerp 复制one2many字段SNAFU,openerp,Openerp,我需要在笔记本纸上显示笔记本项目的记录,但显示的记录与项目不符 我的朋友: 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 :
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)
for p in notebook_project_obj.notebook_project_lines:
employee_lines.append((0,0,{'notebook_sheet_lines':p.id
}))#this dict contain keys which are 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 and get o2m fields, according to your selected project(id)
# notebook_project_lines = notebook_project_obj.browse(cr, user, ['notebook_project_id'])[0].lines
#copy first o2m model to second o2m model
# for 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()
编辑了我的答案,阿诺玛先生。仍然不确定有多少,请检查一下
我是否也需要更改onchange事件?再次提前感谢首先,请在notebook.sheet和notebook.project之间创建链接。现在这两个模型之间没有联系。向notebook.project中的notebook.sheet添加多个One关系,然后将notebook\u sheets\u行中的关系id更改为此字段。 否则,将notebook\u sheet\u行的关系类型更改为many2many。 然后更改onchange_notebok_项目(),它将返回
{'value':{'notebook_sheet_line':LIST_OF_empoyeids}
也不需要在motebook_项目中添加许多 谢谢你善意的回答,我试过了,但还是不走运。它总是显示来自第一个项目(项目A)的员工仍然失败,我认为可能错误不在于更改,而在于notebook.project本身中字段之间的关系。。。阿诺玛先生,你怎么看?我看不出有什么错误,因为关系本身没有错。。。有没有关于如何根据项目向员工展示的想法?我应该重写create函数吗?再次感谢你的回答。我试试看