class marcos_artwork(osv.osv):
def _check_appraisal_price(self, cr, uid, ids, context=None):
record = self.pool.get('appraisal_price')
if record<0:
return False
return True
"""artwork class"""
_name = 'marcos.artwork'
_columns = {
'name': fields.char('Artwork',size=32,required=True),
'description': fields.char('Description',size=200),
'appraisal_price': fields.integer('Appraisal price' ),
'createArtWork': fields.integer('Year of creation'),
'award': fields.boolean('Award'),
'barcode': fields.integer('Barcode'),
'commission': fields.integer('Commission',size=10),
'author_ids': fields.many2one('marcos.author', 'Author'),
'typeartwork_ids': fields.many2one('marcos.artwork_type', 'Artwork Type'),
'owner_ids': fields.many2one('marcos.owner','Owner'),
'style_ids': fields.many2one('marcos.style','Style'),
'lots_ids': fields.many2many('marcos.lots','artworks_lots_form_rel','id_artwork','id_lot','Artworks'),
}
_defaults = {
'award': lambda *a: False,
}
_sql_constraints = [
('name_uniqe', 'unique(name)', 'only equals name!'),
('barcode_uniqe', 'unique(barcode)', 'only equals barcode!')
]
_constraints = [(_check_appraisal_price, 'Error: Length must be Positive', ['appraisal_price'])]
marcos_artwork()
当我想安装模块时,我会看到此错误:
-cannot concatenate 'str' and 'function' object...
我的功能是检查评估价格是否为正。
有人能帮助我吗?
答案 0 :(得分:1)
您的价格检查不会以这种方式运作。这里的大问题是行
record = self.pool.get('appraisal_price')
这不正确。 self.pool.get
会像'marcos.artwork'
那样为您提供“商业模式”的实例,但您需要检查一些字段值。
在这种情况下,您甚至不需要self.pool.get
,因为您已经使用此模型,而是可以使用self
。
所以这里是你需要的代码(你会在插件中找到很多例子):
def _check_appraisal_price(self, cr, uid, ids, context=None):
for artwork in self.browse(cr, uid, ids, context):
if artwork.appraisal_price < 0:
return False
return True
答案 1 :(得分:-1)
我不知道这个特定的框架。但我想从代码中可以看出某种&#34; orm&#34;风格课。将某些行为映射到某种db / table。如果没有完整的堆栈跟踪真的很难说,但我相信错误是你传递__check_appraisal_price
函数作为参考而不是函数的结果 - 这就像_check_appraisal_price(arg,arg2, etc)