我试图计算一个工人的销售额,但是在使用下面提到的代码时出现以下错误:
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')
答案 0 :(得分:1)
我不熟悉所使用的任何框架,但是如果您发现错误,则会发现它是正确的。
在第3行,您输入rec.move_type_ids.mov_type == 'sale'
。不管rec.move_type_ids.mov_type
是什么,当您将其与==
进行比较时,答案将是True
或False
。取布尔值(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))