我在datetime.datetime(self.birth_day.get())
表中有与stock.move
有One2many
关系的记录,列stock.move.reconcile
是move_to_id
表中另一条记录的ID。因此,此链条可以包含数千条记录。
正如您在我的示例中看到的那样,我遍历所有记录并逐层下降,但是正如我之前所说的那样,可能会有成千上万的链接记录,所以我的方法在这里行不通。
我确实知道可能需要在此处使用stock.move
之类的while
循环,然后我应该遍历记录并继续将ID添加到列表中,但是我无法弄清楚知道怎么做。
while there is move_to_ids
记录,该记录与move1(stock.move ID = 10)
有2个内部记录:One2many
(move_to_ids
)
stock.move.reconcile
中的每个都有move_to_ids
每个move_to_id(many2one, 'stock.move' ID = 11)
记录都再次具有任意数量的move_to_id(stock.move, ID=11)
stock.move.reconcile move_to_ids (
move_to_ids ) and each of this
move_to_id('stock.move',ID = 12)`等。
所以基本上我想添加所有records have
ID 10、11、12等以列出所有相关的move_to_id
。
move_to_ids
,依此类推,直到有0 moves_to_recalculate = [10,11,12]
才能从中获得move_to_ids
。
move_to_id
class StockMove(models.Model):
_name = 'stock.move'
move_to_ids = fields.One2many(
'stock.move.reconcile', 'move_from_id', string='Move to')
move_from_ids = fields.One2many(
'stock.move.reconcile', 'move_to_id', string='Move From'
)
答案 0 :(得分:0)
我从其他资源获得了答案,但是我认为我需要在这里发布它,因为答案非常好。
def recalculate_fifo(self):
moves = self.browse(self._context.get('active_ids'))
moves_to_recalculate = moves
current_moves = moves
while current_moves:
current_moves = current_moves.mapped('move_to_ids.move_to_id')
current_moves -= moves_to_recalculate
moves_to_recalculate |= current_moves