特定的过滤器和计算方法映射方案 - Odoo v8

时间:2017-08-26 23:49:11

标签: python openerp odoo-8

假设我在isbn上有一个名为stock_move的字段,此字段属于Boolean类型,我可以创建一个带有域过滤器的方法,它将带来所有{{1}对象,stock_move,并在另一个字段上反映该计算,如下所示:

('isbn', '=', 'True'),

所以,到目前为止,这是一个很好的方法,但现在,假设我想这样做,但不是对于检查@api.multi @api.depends('stock_move') def _compute_amount_total(self): draft_orders = self.env['stock.move'].search([('isbn', '=', True)]) product_uom_qty = sum(draft_orders.mapped('product_uom_qty')) for record in self: record.total_isbn = product_uom_qty 字段的所有stock_moves,而只是为了isbn我打电话给我们说模型中有4个stock_moves字段,即:

Many2one

我可以像这样在我的模型上调用stock_move1 = fields.Many2one('stock.move', string="My Stock Move 1") stock_move2 = fields.Many2one('stock.move', string="My Stock Move 2") stock_move3 = fields.Many2one('stock.move', string="My Stock Move 3") stock_move4 = fields.Many2one('stock.move', string="My Stock Move 4") 字段:

isbn

这应该带给他们,但实际上我并不想在我的视图中展示他们或任何内容,只需阅读stock_move1 = fields.Many2one('stock.move', string="My Stock Move 1") isbn1 = fields.Boolean(string="ISBN 1", related="stock_move1.isbn") stock_move2 = fields.Many2one('stock.move', string="My Stock Move 2") isbn2 = fields.Boolean(string="ISBN 2", related="stock_move2.isbn") stock_move3 = fields.Many2one('stock.move', string="My Stock Move 3") isbn3 = fields.Boolean(string="ISBN 3", related="stock_move3.isbn") stock_move4 = fields.Many2one('stock.move', string="My Stock Move 4") isbn4 = fields.Boolean(string="ISBN 4", related="stock_move4.isbn") 寻找stock_moves和总结isbn = True它们。

我希望我已经解释过了自己。

关于如何实现这一目标的任何想法?

2 个答案:

答案 0 :(得分:2)

也许是这样的:

@api.multi
@api.depends(
    'stock_move1.isbn', 'stock_move1.product_uom_qty',
    'stock_move2.isbn', 'stock_move2.product_uom_qty',
    'stock_move3.isbn', 'stock_move3.product_uom_qty',
    'stock_move4.isbn', 'stock_move4.product_uom_qty')
def _compute_amount_total(self):
    for record in self:
        moves = (record.stock_move1 +
            record.stock_move2 +
            record.stock_move3 +
            record.stock_move4).filtered('isbn')
        record.total_isbn = sum(moves.mapped('product_uom_qty'))

根据我从您的描述中所理解的,您并非真正的isbn1..4相关字段。

答案 1 :(得分:1)

我认为@naglis jonailis已经回答了你的问题。您可能会收到一些错误,因为他没有检查值是否为空,或者他没有直接连接字段。

                total_quantity = 0
                # check if the field is selected and add the quantity 
                if rec.many2one_field :
                      total_quantity =+ rec.many2one_field.product_uom_qty


                # affect the sum to your computed field
                 rec.compute_sum_field = total_quantity

并且为什么使用四个多用户使用很多2用户可以选择多个库存移动。