openerp无法连接“str”和“function”obj

2024-06-26 14:04:48 发布

您现在位置:Python中文网/ 问答频道 /正文

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()

当我想安装模块时,会显示以下错误:

^{pr2}$

我的功能是检查评估价格是否为正。在

有人能帮我吗?在


Tags: nameidsfieldssizecheckintegerpricebarcode
2条回答

你的价格检查不会这样做的。这里最大的问题是线路

record = self.pool.get('appraisal_price')

那是不对的。self.pool.get将为您提供“业务模型”的实例,如'marcos.artwork',但您需要检查一些字段值。在

在本例中,您甚至不需要self.pool.get,因为您已经使用了此模型,可以使用self。在

下面是您需要的代码(您可以在插件中找到许多示例):

^{pr2}$

我不知道这个具体的框架。但我想从代码来看,它是某种“orm”风格的类。将某些行为映射到某种类型的数据库/表。如果没有完整的stacktrace很难判断,但我相信错误是您传递的是__check_appraisal_price函数作为引用,而不是函数的结果-这可能是_check_appraisal_price(arg,arg2, etc)

相关问题 更多 >