如何将列表中的数据放到many2many

时间:2017-11-19 18:47:56

标签: python openerp odoo-9 odoo-10

我想将数据表格列表添加到many2many

to_categorical

我尝试显示尽可能多的字段 (在popular_word中的详细信息是[a,b,c])

@api.multi
def favorite_menus(self):
......
return popular_words[:3]

1 个答案:

答案 0 :(得分:1)

在odoo关系字段中接受一个命令列表,所以如果你的列表是一个命令列表,我想它应该是好的:

默认用于create方法:

添加记录使用4 cammond你的列表应包含如下数据:

命令4告诉odoo在记录列表的第二位添加id

      [(4, id), (4, id2), .......]

id是要添加为Integer值的记录的ID。

如果要创建新记录,请使用0命令:

         [(0, 0, {'field_name': value_name, 'field_2': value_2 }) , ...]

命令0告诉odoo从最后位置的字典创建记录

如果您不想要默认值,则需要默认域名:

menu = fields.Many2many(
    comodel_name='lunch.order.line',
    domain=lambda self:self.favorite_menus())

@api.multi
def favorite_menus(self):
    """ return a default domain."""
    # first calculate the list of the menu that you want
    # the user to select one of them i'm assuming that you use search
    # so the result is a recordSet of menu 
    menus = .....

    return "[('id', 'in', '%s')]" % (tuple(menus.ids), ) # keep the comma 
    # or try this i think bouth work
    return [('id', 'in', menus.ids)]

注意:您可能需要更改域以满足您的需求。       但要防止用户选择您需要过滤的其他元素       他们在m2m或o2m或m2o字段中使用域名。