在odoo 10,python中使用many2one字段创建def函数

时间:2018-02-22 02:05:58

标签: python python-2.7 odoo-10

我想定义我的名字取决于我的资产标签加上我的资产品牌,但我的资产标签和资产品牌字段是Many2one并且它没有给我一个错误,但输出错误。它给我一个数字,整数而不是字符串(这是标签名称加上品牌名称)。我的预期结果是例如我的资产标签是计算机,然后我的资产品牌是华硕,那么我的预期结果名称将是Computer-Asus。请帮忙。非常感谢。

这就是我的所作所为。

@api.model
def create(self,vals):
    if vals['asset_tag']:
        asset_tag = vals['asset_tag']
    else:
        asset_tag = ''

    if vals['asset_brands_id']:
        brand_id = vals['asset_brands_id']
    else:
        brand_id = ''

    name = "{}-{}".format(asset_tag, brand_id)

    vals['name'] = name
    return super(ModifiedAssetAsset, self).create(vals)

然后输出就是这个

result

它给了我2-4资产名称,但我期望的结果是车辆丰田

1 个答案:

答案 0 :(得分:1)

  • 请尝试使用此代码帮助您
@api.model
def create(self,vals):
    if vals['asset_tag']:
        asset_tag = vals['asset_tag']
    else:
        asset_tag = ''

    if vals['asset_brands_id']:
        brand_id=self.env['asset.brand.model.name'].search([('id','=',vals
                 ['asset_brands_id'])],limit=1).name
    else:
        brand_id = ''
        name = "{}-{}".format(asset_tag, brand_id)
        vals['name'] = name
        return super(ModifiedAssetAsset, self).create(vals)@api.model