Odoo中给字段填加唯一性约束

Odoo中给字段填加唯一性约束,第1张

在进行Odoo二次开发的时候,经常会遇到一些字段要进行唯一性验证,例如学生档案管理系统中学生信息的学号,业务管理系统中的一些业务标识字段。

例如最近在开发一款基于车辆的业务系统,所有业务订单都是基于一辆车辆进行的,为避免不同业务员输入同一车辆的订单,就需要在业务员录入车辆号的时候对车牌号进行唯一性验证,如果系统中已经存在该车辆车牌号则跳出提示,阻止该业务的录入。

如何实现Odoo中这种字段唯一值的约束呢?

首先,我们定义一个普通字段cph,如下:

cph = fields.Char('车牌号')

接下来,我们在_sql_constraints中添加对应的约束定义,如下:

_sql_constraints = [ ('check_uniq_cph', 'unique(cph)', '车牌号已经存在!')   ]  

括号中三个参数依次是约束定义名、约束定义内容、d出提醒内容。

在_sql_constraints定义中可以填写多个字段的约束定义,每个用()包裹,之间用逗号分隔开即可。

这样,在输入重复的车牌号后点击保存时,系统则跳出下面的提示框,并停止保存动作:

例如这一段就是继承了模型之后添加了自定义字段

from openerp import models, fields

class SaleOrder(models.Model):

_inherit = 'sale.order'

delivery_price = fields.Float(string='快递费用', compute='_compute_delivery_price')

carrier_id = fields.Many2one("delivery.carrier", string="运输方式")

然后在对应XML的视图中添加自定义的字段(或者继承视图修改,方法很多不做详细介绍了),然后重启升级模块。刷新之后就能在界面上看见了。

下面这段代码是通过继承视图,然后把字段加到phone显示之后

<xpath expr="//field[@name='phone']" position="after">

<field name="delivery_price"/>

<field name="carrier_id"/>

</xpath>

写起来其实挺简单,当然要深入了解各个字段,三种继承区别还需要深入。

以上都是手敲的,没有太多的思考,有什么不懂可以给我私信。

这是我以前回答过的一个答案

合并成一张交货单的前提是销售单的抬头要一样吧 当然可以多个订单合并为一个交货文件了。这个是SAP标准功能!!!当然,要满足很多条件的前 提下。楼上的就是一个重要的条件,如果不能满足,系统会出提示 1


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/bake/7925999.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-11
下一篇 2023-04-11

发表评论

登录后才能评论

评论列表(0条)

保存