如何在Odoo 9.0c中为many2one字段设置defaut值?

时间:2016-11-17 02:23:44

标签: forms odoo-9 many-to-one

我已经定制了一个包含many2one字段的模块。现在,我想设置该字段的默认值,其编码为:[[u'bom_ids',u'!=',False]]。我尝试了下面的代码,但它无法正常工作

width_id = field.Many2one('sale.order.line.width', default ='_get_width_default')

def _get_width_default(self, cr, uid, context=None): 
     res = self.pool.get('product.template').search(cr, uid, [(u'bom_ids', u'!=', False)], context=context)
     return res and res[0] or False


default = {
'width_id' : _get_width_default,
}

请问你能帮助我指出问题是什么,以及如何解决问题并最终实现我的目的。感谢收看

1 个答案:

答案 0 :(得分:1)

import logging
_logger = logging.getLogger(__name__)

def _get_width_default(self, cr, uid, context=None): 
    #REPLACE DOMAIN WITH SOMETHING RELEVANT
    domain = []
    res = self.pool.get('sale.order.line.width').search(cr, uid, domain, context=context)
    _logger.info("PREPARING DEFAULT VALUE")
    _logger.info(res)
    return res[0] or False

width_id = fields.many2one('sale.order.line.width')

_defaults = {
    'width_id' : _get_width_default,
}

就日志记录而言,您看到了什么?试试上面的代码(v7风格)。

Odoo9 Style(新API)

import logging
_logger = logging.getLogger(__name__)

def _get_width_default(self): 
    #REPLACE DOMAIN WITH SOMETHING RELEVANT
    domain = []
    res = self.env['sale.order.line.width'].search(domain)
    _logger.info("PREPARING DEFAULT VALUE")
    _logger.info(res)
    return res[0].id or False

width_id = fields.many2one('sale.order.line.width',default=_get_width_default)