2016-11-04 9 views
1

表示カスタムフィールドの値は、私は、カスタムフィールド<strong>res.partner</strong>で「コード」と命名した8

class cust_partner 
    _inherit = 'res.partner' 
    _columns = { 'code': fields.char('Code', index=True), } 

カスタマイズname_get、name_search方法は、お客様の代わりにコードを取得するには名。

それは私のカスタムクラスでフィールド

に検索し、表示名でのみ動作します。

class test_order(osv.Model): 
    _inherit = 'test_order' 
    _columns = {'customer_code': fields.many2one('res.partner', 'Code', ondelete='restrict', required=False), } 

私の予想出力はtest_orderクラスである私は、名前の代わりに「コード」の値を表示する必要がありますフィールドcustomer_code(フォームビューでの保存後)。

答えて

0

代わりにこのtest_orderクラスを試してください。

# -*- coding: utf-8 -*- 
from openerp import models, fields, api, _ 
class test_order(models.Model): 
    _inherit = 'test_order' 

    @api.multi 
    @api.depends("partner_id") 
    def _compute_customer_code(self): 
     for o in self: 
      o.customer_code = o.partner_id.code 

    customer_code = fields.Char('Code',compute=_compute_customer_code) 
    partner_id = fields.Many2one('res.partner','Customer') 

ここでpartner_idフィールドに入力すると、 customer_code-fieldは顧客からのコード値を自動的に取得します。

+0

これは動作しますが、私は2つのフィールドがPARTNER_ID =コードの出力を期待イムたくありません(デフォルト名) – Silviaa

+0

モデルのデフォルト名は 'class cust_partner'クラスの – Nope

+1

' _rec_name = 'code''で設定できます。しかし、あなたはどこにでも名前の代わりにコードを取得します。 _inheritのようなものです。 – Nope

0

あなたはjavascriptコードからdisplyaed値を変更することができます。

openerp.custom_module = function(instance){ 

var _t = instance.web._t, 
    _lt = instance.web._lt; 
var QWeb = instance.web.qweb; 

openerp.custom_module.CustomFieldMany2One = openerp.web.form.FieldMany2One.extend(
    { 
    set_value: function(value_) { 
     this._super(value_); 
     var self = this; 
     var context = this.build_context().eval(); 
     var model_obj = new instance.web.Model(this.field.relation); 
     model_obj.call('read', [value_[0], ['code'], context]).then(function (res) { 
      if ('code' in res) 
      { 
       self.display_string(res['code']); 
      } 
     }); 
    }, 
}); 
openerp.web.form.widgets.add('custommany2one', 'openerp.custom_module.CustomFieldMany2One'); 
} 

使用widget XML内の属性:

<field name='customer_code' widget="custommany2one"/> 
+0

私はread()、name_get()、name_search()メソッドのカスタマイズによってこれを行いました。ありがとう – Silviaa

関連する問題