2017-09-08 7 views
-1

モデルのフィールド名を別のモデルの選択フィールドのオプションにしたいと考えています。出来ますか?Odoo:他のモデルのフィールド名を取得し、それを選択にする

class ExportEmplWizard(models.TransientModel): 
    _name = 'hr.empl.exp.wizard' 

    empl_ids = fields.Many2many('hr.employee', string="Karyawan") 
    hr_field = fields.Selection(hr_field_choice, string="Pilih Kolom") 


    def empl_to_exp(self): 
     fields = self.env['hr.employee'].fields_get() 
     hr_field_choices = [] 
     for key, val in fields.items(): 
      choice = (key, val['string']) 
      hr_field_choices.append(choice) 

私は、getフィールドをしようとしているが使用して他のモデルに名前を付ける:

sel.self.env['hr.employee'].fields_get() 

問題は、私は選択オプション(実際には複数選択)としてそれを作る方法がわからない、です。

ありがとうございました。

+0

あなたが試したコードを表示する –

答えて

0

docstring for fields.Selection()

あたりとして:PARAM選択:このフィールドに使用可能な値を指定します。 ペアのリスト(value,string)、または モデルメソッドまたはメソッド名のいずれかとして指定します。

基本的には、selection引数はcompute引数のように機能するはずです。そしてcode of fields.Selection.get_values()がこれを確認します。

ですから、このような何か試してみてください:

hr_field = fields.Selection(selection='empl_to_exp', string="Pilih Kolom") 

def empl_to_exp(self): 
    fields = self.env['hr.employee'].fields_get() 
    return [(k, v['string']) for k, v in fields.items()] 

あなたが持っていることを/単にv['string']の代わりにgetattr(v, 'string', 'DEFAULT_VALUE')を使用します。フィールドは常に文字列を持つ必要があります。

関連する問題