odoo16实用功能之lambda

目录

1、使用lambda进行筛选

2、 使用lambda进行映射

3、 使用lambda进行聚合

4、 使用lambda进行排序

 5、动态设置字段的默认值:你可以使用lambda函数来设置字段的默认值,根据模型中其他字段的值来动态决定默认值

 


在Odoo中,lambda参数通常用于在不同的方法中传递函数或逻辑。以下是一些Odoo中常见的lambda参数的用法示例,以及相应的代码解释: 

 

 

1、使用lambda进行筛选

records = self.env['model.name'].search(lambda record: record.age > 30)

        这个示例中,lambda函数用于筛选出age字段大于30的记录。search方法接受一个函数作为参数,该函数将在每个记录上执行,只有当lambda函数返回True时,记录才会被返回。

 

2、 使用lambda进行映射

names = self.env['model.name'].browse([1, 2, 3]).mapped(lambda record: record.name)

 这个示例中,lambda函数用于从记录集合中映射出name字段的值。mapped方法接受一个lambda函数作为参数,该函数将应用于记录集合中的每个记录,并返回映射后的结果。

 

3、 使用lambda进行聚合

total_age = self.env['model.name'].search([]).filtered(lambda record: record.state == 'active').aggregate(lambda records: sum(records.mapped('age')))

这个示例中,lambda函数用于过滤出状态为"active"的记录,然后通过mapped将这些记录的age字段映射出来,最后通过aggregate计算出总年龄。aggregate方法接受一个lambda函数作为参数,该函数用于指定如何对记录集合进行聚合计算。

 

4、 使用lambda进行排序

sorted_records = self.env['model.name'].search([]).sorted(lambda record: record.age)

这个示例中,lambda函数用于指定排序的依据,将记录按照age字段进行升序排序。sorted方法接受一个lambda函数作为参数,用于定义排序规则

 5、动态设置字段的默认值:你可以使用lambda函数来设置字段的默认值,根据模型中其他字段的值来动态决定默认值

default_value = fields.Char(default=lambda self: self.env.user.name)

这个示例中,default_value字段的默认值会根据当前用户的名字动态设置。

  • 15
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dear.爬虫

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值