odoo 里面重写create方法容易踩的坑

在Odoo开发中,重写`create`方法是常见操作,但需要注意其正确用法。错误的返回值可能导致`dict object has no attribute id`的错误。应避免在`create`后直接使用`return`,而应使用`continue`或在非循环中借助`else`子句确保返回创建记录的ID。
摘要由CSDN通过智能技术生成

相信大家在开发odoo的时候也经常需要重写create方法,那么问题来了,重写create方法的正确姿势是什么呢?

最常见的代码,可能是这样的

@api.model
def create(self,vals):
    super().create(vals)

但是,复杂一点的情况,我们可以需要在,create方法里面校验一些用户填入的信息是否是符合规范的,比如用户当前填入的明细信息是否是当前公众号的最低价,如果是的就把新的低价重写到表里面去,如果不是,就要进行提醒,如果是没有投放过的公众号,就要进行数据的插入。

那么这里如何写呢?

def create(self,vals):

""" 判断明细里面的投放是否是最低价 &  判断是否关联了预算申请单 """
if not vals.get('flow_detail_ids'):
    raise UserError(_('必须填写申请明细.'))

for record in vals.get('flow_detail_ids'):
    if len(record) < 3:
        continue
    wechat = record[2].get('wechat_account')
    position = record[2].get('banner_position')
    amount = record[2].get('amount')
    remark = record[2].get('remark')
    min_amount_obj = self.env['ads.p
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值