填充Many2many字段(odoo 8)

时间:2015-08-06 10:29:11

标签: python xml postgresql openerp odoo

我做了什么:

我有一个带

的模块
myfield = fields.Many2one('res.partner', string="Graduate", domain=[('is_graduated', '=', True)])

然后我又有了一个

的课程
_inherit = 'res.partner'
is_graduated = fields.Boolean("Graduated before?", default=False)
graduations = fields.Many2many('my_module.courses', string="Graduation courses")

我得到了什么:

myfield效果很好,但graduations字段为空。如果您修改user 1个人资料,则可以使用graduationAdd item字段添加条目,但我需要自动填写。

我的期望:

我希望当您打开myfield个人资料时,user 1设置为graduations的所有记录都会显示在字段user 1中。当我创建记录并将myfield值设置为user 1时,该记录必须显示在字段user 1中的graduations个人资料中。如何实现?

3 个答案:

答案 0 :(得分:1)

您需要onchange method使用myfield,然后在其中需要填写graduations字段,如下所示:

@api.onchange('myfield'):
def _onchange_myfield(self):
    #fill graduations field here...
    ...

答案 1 :(得分:1)

_inherit = 'crm.phonecall'    
alarm_ids = fields.Many2many('calendar.alarm',string="Reminders") 
 set the alarm_ids of calendar.event model in create method of crm phonecall...
 alarm_ids = [(6,0,self.alarm_ids.ids)] 

_inherit = 'calendar.event'
 alarm_ids = fields.Many2many('calendar.alarm',string="Reminders") 

答案 2 :(得分:0)

你可以达到这样的目标。

例如:

@api.one
@api.depends(
      #here you may define your depend field name
)
def _set_graduations(self):
    #here comes your logic which will collect ids
    #and than return it with self.field_name like

    self.graduations = [list_of_ids]


graduations = fields.Many2many('my_module.courses', string='Payments',
                                compute='_set_graduations') 

如果您不想使用 @ api.depends ,则可以使用 @ api.multi 。作为参考,您可以使用 account_invoice.py 文件查看帐户模块。