Odoo 追加所有stock.move ID';从所有相关记录链中列出

Odoo 追加所有stock.move ID';从所有相关记录链中列出,odoo,odoo-12,Odoo,Odoo 12,我在stock.move表中有记录,该表与stock.move.confidence列有move\u-id关系,该列是stock.move表中另一条记录的id。所以这个链可以是数千条记录 正如您在我的示例中所看到的,我循环遍历所有记录并逐层向下,但正如我之前所说的,可能有数千条链接记录,因此我的方法在这里不起作用 我确实知道我可能需要在这里使用而循环,比如而有move\u to\u id,然后我应该循环记录并不断将id添加到列表中,但我就是不知道怎么做 move1(stock.move ID=

我在
stock.move
表中有记录,该表与
stock.move.confidence
列有
move\u-id
关系,该列是
stock.move
表中另一条记录的id。所以这个链可以是数千条记录

正如您在我的示例中所看到的,我循环遍历所有记录并逐层向下,但正如我之前所说的,可能有数千条链接记录,因此我的方法在这里不起作用

我确实知道我可能需要在这里使用
循环,比如
而有move\u to\u id
,然后我应该循环记录并不断将id添加到列表中,但我就是不知道怎么做

  • move1(stock.move ID=10)
    与其中2条记录有
    One2many
    关系的记录:
    move\u to\u ID
    stock.move.confidence

  • 每个
    move\u-to\u-id
    都有
    move\u-to-id(多个'stock.move'id=11)

  • 每个
    move\u-to\u-id(stock.move,id=11)
    记录都有任意数量的
    move\u-id(
    stock.move.conference
    ),每个
    move\u-id
    记录都有
    move\u-to-id(
因此,基本上我想添加到列表中,列出所有
move\u to\u id
IDs 10、11、12等,以列出所有相关的
move\u to\u id

移动到\u重新计算=[10,11,12]
以此类推,直到有0
移动到\u id
以从中获取
移动到\u id
为止

class StockMove(models.Model):
_name='stock.move'
将_移动到_id=fields.One2many(
'stock.move.conference'、'move_from_id',string='move to')
从\u id=fields.One2many移动\u(
'stock.move.confidence'、'move_to_id',string='move From'
)
类(models.Model):
_名称='stock.move.confidence'
_description=‘库存移动对账’
move_to_id=fields.manyOne('stock.move',string='move to')
move\u from\u id=fields.manyOne('stock.move',string='move from')
def重新计算(自我):
moves=self.browse(('active_id'))
移动到重新计算=[]
对于move1 in移动:
#我将链中的第一步添加到列表中
将\移动到\重新计算。追加(move1.id)
#第一个移动有两个移动到ID,所以我做了另一个循环,将其ID添加到列表中
对于第二层移动。移动到ID:
移动到重新计算.appen(第二层移动到id.id)
#secont tier move有1个move_to_ID,所以我执行另一个循环,并将其ID添加到列表中。
对于第三层移动到第二层移动到第三层ID:
移动到重新计算.appen(第三层移动到id.id)
#第三层移动有另一个移动到ID,依此类推。

我从其他资源获得了答案,但我想我需要在这里发布,因为答案非常好

def重新计算\u fifo(自):
moves=self.browse(self.\u context.get('active\u id'))
移动到重新计算=移动
当前移动=移动
当前_移动时:
当前移动=当前移动。映射('move_to_id.move_to_id'))
当前移动-=移动到重新计算
移动到重新计算当前移动