Openerp 自定义字段默认值-使用来自同一字段的其他条目填充

Openerp 自定义字段默认值-使用来自同一字段的其他条目填充,openerp,odoo,odoo-8,Openerp,Odoo,Odoo 8,我已经创建了一个自定义模块,在产品屏幕上有额外的字段。我正在尝试将默认值设置为下拉列表,其中包含已提交到该字段的所有条目或创建新条目的选项(与将产品添加到BOM表时的默认值相同) 我尝试创建一个manyOne字段,该字段引用另一个表中的字段,但在尝试安装模块时不断出现错误。下面是我遇到问题的更新代码。提前谢谢 class product_part_detail(osv.osv): _inherit = 'product.template' _name = 'product.par

我已经创建了一个自定义模块,在产品屏幕上有额外的字段。我正在尝试将默认值设置为下拉列表,其中包含已提交到该字段的所有条目或创建新条目的选项(与将产品添加到BOM表时的默认值相同)

我尝试创建一个manyOne字段,该字段引用另一个表中的字段,但在尝试安装模块时不断出现错误。下面是我遇到问题的更新代码。提前谢谢

class product_part_detail(osv.osv):
    _inherit = 'product.template'
    _name = 'product.part.detail'

    _columns = {
    'x_mfrname1': fields.many2one('product.part.detail.fill', 'x_mfrname1id'),
    'x_mfrname2': fields.many2one('product.part.detail.fill', 'x_mfrname1id'),
}

class product_part_detail_fill(osv.osv):
    _name = 'product.part.detail.fill'

def _sel_func(self, cr, uid, context=None):
    obj = self.pool.get('product.part.detail')
    ids = obj.search(cr, uid, [])
    res = obj.read(cr, uid, ids, ['x_mfrname1', 'x_mfrname2'], context)
    res = [(r['x_mfrname1'], r['x_mfrname2']) for r in res]
    return res

_columns = {
    'x_mfrname1id': fields.one2many('product.part.detail', 'x_mfrname1', 'x_mfrname2', selection=_sel_func),
}

有几件事。要想下拉他们以前输入的值,需要一个manyOne字段。您将创建另一个模型,然后使x_mfrname1成为该表的多个模型。只要用户对该表具有create访问权限,他们就会在下拉列表中获得create选项,为新值设置键

另一项是,当您使用pre-8 API时,默认方法的方法签名应为:

def get_default_name(self, cr, uid, context=None):

谢谢你的帮助。我尝试创建多人关系,但在安装模块时不断出现错误。我用上面的新代码进行了更新。非常感谢您的帮助,我在解读官方odoo文档时遇到了问题。@CoreyHandley我发现odoo开发精华是开始使用odoo的一个很好的资源。
def get_default_name(self, cr, uid, context=None):