@font-face { font-family: "宋体";}@font-face { font-family: "Cambria Math";}@font-face { font-family: "微软雅黑";}@font-face { font-family: "Calibri";}@font-face { font-family: "@宋体";}@font-face { font-family: "@微软雅黑";}p.MsoNormal, li.MsoNormal, div.MsoNormal { margin: 0 0 0; font-size: 16px; font-family: 宋体; }p { margin-right: 0; margin-left: 0; font-size: 16px; font-family: 宋体; }.MsoChpDefault { font-size: 13px; }div.WordSection1 { }ol { margin-bottom: 0; }ul { margin-bottom: 0; }
1. odoo提供两种方式实现对模型数据的验证功能:
1. 定义一个使用constrains装饰器的方法,如
from odoo.exceptions import ValidationError
@api.constrains('age')
def _check_amos_test(self):
for record in self:
if record.age > 20:
raise ValidationError('Your record in tooold %s" % record.age)
2. 通过定义模型的_sql_constraints属性,如
_sql_constrains = [
("session_or_partner_id",
"CHECK(session IS NULL != partner_id IS NULL)",
"amos test _sql_constrains")
]
2. 向数据模型添加可计算的字段 compute
@api.depends('product_uom_qty','price_unit')
def _compute_amount(self):
for line in self:
price = line.price_unit * line.product_uom_qty
line.update({
'price_subtotal': price,
})
product_uom_qty =fields.Float(string=u'amos test 数量',required=True,default=1.0)
price_unit = fields.Float(u'amos test 单价', required=True, default=0.0,digits=(10, 2))
price_subtotal =fields.Float(compute='_compute_amount', string=u'amos test 小计', store=True)
3. 向数据模型添加一个树形字段 Tree
class product_category(models.Model):
_name = 'product.category.amos.test'
_description = u'amos test 产品分类'
name = fields.Char(string=u'amos test 名称', required=True, )
parent_id = fields.Many2one('product.category', string=u'amos test 上级菜单')
child_id = fields.One2many('product.category', 'parent_id',string=u'amos test 下级菜单')
sequence = fields.Integer(string=u'amos test 排序', default=0)
parent_left = fields.Integer(string=u'amos test 左')
parent_right = fields.Integer(string=u'amos test 右')
1. odoo提供两种方式实现对模型数据的验证功能:
1. 定义一个使用constrains装饰器的方法,如
from odoo.exceptions import ValidationError
@api.constrains('age')
def _check_amos_test(self):
for record in self:
if record.age > 20:
raise ValidationError('Your record in tooold %s" % record.age)
2. 通过定义模型的_sql_constraints属性,如
_sql_constrains = [
("session_or_partner_id",
"CHECK(session IS NULL != partner_id IS NULL)",
"amos test _sql_constrains")
]
2. 向数据模型添加可计算的字段 compute
@api.depends('product_uom_qty','price_unit')
def _compute_amount(self):
for line in self:
price = line.price_unit * line.product_uom_qty
line.update({
'price_subtotal': price,
})
product_uom_qty =fields.Float(string=u'amos test 数量',required=True,default=1.0)
price_unit = fields.Float(u'amos test 单价', required=True, default=0.0,digits=(10, 2))
price_subtotal =fields.Float(compute='_compute_amount', string=u'amos test 小计', store=True)
3. 向数据模型添加一个树形字段 Tree
class product_category(models.Model):
_name = 'product.category.amos.test'
_description = u'amos test 产品分类'
name = fields.Char(string=u'amos test 名称', required=True, )
parent_id = fields.Many2one('product.category', string=u'amos test 上级菜单')
child_id = fields.One2many('product.category', 'parent_id',string=u'amos test 下级菜单')
sequence = fields.Integer(string=u'amos test 排序', default=0)
parent_left = fields.Integer(string=u'amos test 左')
parent_right = fields.Integer(string=u'amos test 右')