相信大家在开发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