如何将列表中的记录添加到一个多个字段?

时间:2019-07-15 21:05:28

标签: python arrays list range odoo

我有三个字段:开始年份,结束年份和范围。我需要将第二个字段的范围列表添加到范围字段中。

@api.multi
@api.depends('start', 'end')
def years(self):
    self.rang = [int(x) for x in range(int(self.start),int(self.end))]
    pass

start = fields.Char(string="", required=False, )
end = fields.Char(string="", required=False, )
rang = fields.One2many(compute=years )

我收到此错误消息:

  

对不起,您无权访问此文档。如果您认为这是一个错误,请与系统管理员联系。

(文档模型:_unknown)-(操作:已读取,用户:2)

3 个答案:

答案 0 :(得分:0)

您需要在 one2many 字段中添加 comodel_name ,您可以在enter link description here

中查看Odoo的官方文档

答案 1 :(得分:0)

根据您提到的问题,我想您要显示产品生产日期在一个范围之间。


start = fields.Char(string="", required=False, )
end = fields.Char(string="", required=False, )
product_ids = fields.Many2many(comodel_name="product_model")

@api.onchange('start','end')
def _search_year_range(self):
    if self.start and self.end:
        model = self.env['product_model']
        # because your info is too less, you need to fix domain base on your case by yourself.
        domain = [('product_date', '>', self.start),('prduct_date', '<', self.end)]
        records = model.search(domain)
        self.product_ids = [(6, 0, records.ids)]


答案 2 :(得分:0)

我认为您必须使用Selection字段而不是One2many。 试试这个

@api.depends('start', 'end')
def _years(self):
  if self.start and self.end:
     return list([(str(x), int(x)) for x in range(int(self.start),int(self.end))])

start = fields.Char(string="", required=False)
end = fields.Char(string="", required=False, )
rang = fields.Selection(_years )