计算工人的销售额

时间:2020-02-27 19:18:07

标签: python odoo

我试图计算一个工人的销售额,但是在使用下面提到的代码时出现以下错误:

TypeError:类型为'bool'的对象没有len()

Movement_type类(模型.Model):

   _name = 'project_rc.movement_type'

   _rec_name = 'movement_type'

type_movement =字段。选择([[('purchase','Purchase'),('sale','Sale'),('merma','Merma')]],字符串=“运动类型”,必填=是的)

类工作者(models.Model):

  _name = 'project_rc.worker'

  _rec_name = 'name'

sales_counter =字段。整数(字符串=“销售收入”,compute =“ get_sales_realized”,store = True)

@ api.depends('move_type_ids')

  def get_sales_realized (self):

    for rec in self:

        rec.count_sale = len (rec.move_type_ids.mov_type == 'sale')

1 个答案:

答案 0 :(得分:1)

我不熟悉所使用的任何框架,但是如果您发现错误,则会发现它是正确的。

在第3行,您输入rec.move_type_ids.mov_type == 'sale'。不管rec.move_type_ids.mov_type是什么,当您将其与==进行比较时,答案将是TrueFalse。取布尔值(t / f)没什么意义。

从上下文中,我猜测rec.move_type_ids是对象列表,您想弄清楚其中有多少个mov_type属性等于'sale'。如果是这样,那么您可以使用for循环轻松做到这一点:

sales = []
for thing in rec.move_type_ids:
    if thing.type == 'sale':
        sales.append(thing)
rec.count_sale = len(sales)

如果您想变得更高级,可以使用filter函数:

rec.count_sale = len(filter(lambda x: x.mov_type == 'sale', rec.move_type_ids))
相关问题