数据库约束
sql约束:使用_sql_constraints属性。
属性值是一个列表,每一个列表元素有三个内容:(name,sql_definition,message):
name是约束名,
sql_definition是一个postgresql语句,可以为uniqe检查、或者用聚集函数判断某字段值等等,结果返回值是布尔类型即可,
message是校验失败时返回的错误消息。
项目唯一约束 示例如下:
_sql_constraints = [
('check_uniq_name', 'unique(name)', u'此项目已经存在!')
]
注:sql约束添加时,数据库中不符合的需要删除,否则约束不生效
装饰器约束
from odoo.exceptions import ValidationError
@api.constrains('housing_area')
def _check_area(self):
for record in self:
if record.housing_area < 0:
raise ValidationError("建筑面积不得小于0: %s" % record.housing_area)
- onchange 是通过前端方式修改 如果需要保存只读字段的话 需要加force_save = “True”
<field name="name" readonly="1" force_save="1"/>
- 字段数据不存储在数据库时,排序的小三角,不可点击。
- 默认排序是按照数据库中id升序排
- 视图颜色控制
<tree string="xxx" decoration-bf="判断">
- 在状态等于7的时候隐藏编辑按钮
status_id = fields.Selection(ENG_STATUS, string='工程状态', default='0')
x_css = fields.Html(
string='CSS',
sanitize=False,
compute='_compute_css',
store=False,
)
@api.depends('status_id')
def _compute_css(self):
for application in self:
if application.status_id == '7':
application.x_css = '<style>.o_form_button_edit {display: none !important;}</style>'
else:
application.x_css = False
放在xml中
<field name="x_css" invisible="1"/>