我希望这个问题有道理。我的目标是显示name_get()中定义的字段。我在mrp_bom类中重写了name_get()函数,附加了代码。但是,我不知道哪个字段将从函数name_get()获取返回值。非常感谢任何见解!
class mrp_bom(osv.osv):
_inherit = 'mrp.bom'
_name = 'mrp.bom'
_columns = {
'x_nk_default_code': fields.related('product_id', 'default_code',
type='char', relation='product.product',
string='Part Number', store=True,
readonly=True),
'x_nk_class_desc': fields.related('product_id', 'categ_id', 'name',
type='char', string='Class Description',
store=True, readonly=True),
'x_nk_item_desc': fields.related('product_tmpl_id', 'name',
type='char', relation='product.template',
string='Item Description', store=True,
readonly=True),
'categ_id': fields.related('product_id', 'categ_id', type='integer',
relation='product.product', string='Categ_ID',
store=True, readonly=True),
'x_category_code': fields.related('product_id', 'categ_id',
'x_category_code', type='char', string='Class
Description', store=True, readonly=True),
}
def name_get(self, cr, user, ids, context=None):
if context is None:
context = {}
if isinstance(ids, (int, long)):
ids = [ids]
if not len(ids):
return []
def _name_get(d):
name = d.get('name','')
code = context.get('display_default_code', True) and
d.get('x_category_code',False) or False
if code:
name = '[%s] %s' % (code,name)
return (d['id'], name)
result = []
for product_category in self.browse(cr, user, ids, context=context):
mydict = {
'id': product_category.id,
'name': product_category.name,
'x_category_code':
product_category.x_category_code,
}
result.append(_name_get(mydict))
return result
答案 0 :(得分:3)
name_get方法用于在many2one字段中显示记录的值。例如,在销售订单行中,如果选择产品,则字段“product_id”的销售订单行中显示的值必须是product.product对象上“name_get”的结果。
没有特殊字段显示name_get的结果。如果您需要将name_get方法的结果放在记录的字段中,则应使用属性“compute”创建:http://odoo-new-api-guide-line.readthedocs.org/en/latest/fields.html#computed-fields
您可以在此处找到更多信息:http://odoo-new-api-guide-line.readthedocs.org/en/latest/environment.html?highlight=name_get
我希望这对你有所帮助。