我需要得到一个many2many领域的2年之间的范围,每年都必须是模型上的记录
我增加了两个字段来得到这两年,和方法,以得到它们之间的范围。
class yearrange(models.Model):
_name = 'yearrange'
_rec_name = 'name'
name = fields.Char()
class autopart(models.Model):
_inherit = 'product.template'
@api.multi
@api.depends('start', 'end')
def years(self):
record = [int(x) for x in range(int(self.start), int(self.end))]
for rec in self:
rec.rang=record
start = fields.Char(string="", required=False, )
end = fields.Char(string="", required=False, )
rang = fields.Many2many(comodel_name="yearrange", string="",compute=years )如果将任何数据添加到年份字段中,则会得到此错误,丢失的记录记录不存在或已被删除。
(记录: 2010、2016、2017、2018、2019、2020年,用户: 2)
发布于 2019-07-17 15:56:25
我就是这样做的:
class yearrange(models.Model):
_name = 'yearrange'
_rec_name = 'name'
name = fields.Char()
product_id = fields.Many2one(comodel_name="product.template")
class autopart(models.Model):
_inherit = 'product.template'
@api.multi
@api.onchange('start', 'end')
def years(self):
print('innnnn')
for rec in self:
if rec.start and rec.end:
record = [int(x) for x in range(int(rec.start)+1, int(rec.end)+1)]
list = []
for item in record:
print(item)
range_id = self.env['yearrange'].create({
'name': str(item)
})
list.append(range_id.id)
rec.rang = [(4, x, None) for x in list]
start = fields.Char(string="", required=False, )
end = fields.Char(string="", required=False, )
rang = fields.One2many(comodel_name="yearrange", inverse_name="product_id", store=True)发布于 2019-07-16 22:54:34
您可以像这样更新计算方法:
@api.multi
@api.depends('start', 'end')
def years(self):
for rec in self:
rec.rang = [(0, 0, {'name': x}) for x in range(int(rec.start), int(rec.end) + 1)]发布于 2019-07-18 05:42:36
在Odoo中,在创建记录时,可以通过使用它的语义将值传递给它的子One2Many或Many2Many,这里(0,0,{})表示我试图创建新的One2Many记录。
注意:
在valsB中,我附加了ClassC的值,这个dict附加了A类的原始Vals,这就像将嵌套的dict值传递到ClassA中一样
同样,还有一个编辑/更新、删除等语义,请参考下面的示例,这些示例用于One2Many和Many2Many。
(0,0,{value })链接到需要用给定值字典创建的新记录。
(1,ID,{value })使用id = ID更新链接记录(在其上写入值)
(2,ID)用ID = id删除和删除链接的记录(调用ID上的unlink,这将完全删除对象,以及指向对象的链接)
(3,ID)使用id = ID切断链接到链接记录的链接(删除两个对象之间的关系,但不删除目标对象本身)
(4,ID)用id = ID链接到现有记录(添加关系)
(5)取消所有链接(如对所有链接记录使用(3,ID) )
(6,0,ID)替换链接ID列表(例如对ID列表中的每个ID使用(5)然后(4,ID))
https://stackoverflow.com/questions/57061316
复制相似问题