我想在另一个模型中的选择字段中获取模型中的字段名称。有可能吗?
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)
我正在尝试使用:
在其他型号上获取字段名称sel.self.env['hr.employee'].fields_get()
问题是,我不知道如何将其作为选择选项(实际上选择)。
谢谢您的帮助。
根据fields.Selection()
:参数选择:指定此字段的可能值。 它作为对列表(
value
,string
)或 模型方法或方法名称。
基本上,selection
参数应像compute
参数一样工作。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()]
您可能需要/想要使用getattr(v, 'string', 'DEFAULT_VALUE')
而不是简单地使用v['string']
。字段应该始终有一个字符串。
def get_selection_name(env, model, field, value):
return dict(env[model].fields_get(field, 'selection').get(field, {}).get('selection',{})).get(value)
# usage
get_selection_name(request.env, 'sale.order', 'general_status', 'draft') # 'Draft'
get_selection_name(self.env, 'sale.order', 'general_status', 'draft') # 'Draft'
我使用此!