如何获取列表并将其放入表单放置列表

时间:2019-02-04 19:52:23

标签: python odoo

我有一个声明为

的模型
class GuimarcLinechargerule(models.Model):
    _name = 'guimarc.linechargerule'

    line_type = fields.Char('line_type', required=True)
    loc = fields.Char('loc', required=True)
    prod_type = fields.Char('prod_type', required=True)
    cost_element = fields.Char('cost_element', required=True)

我要保留cost_element的列表,并将其放在表单的下拉列表中。

我的班级只有:

 cost_element = fields.Many2one('guimarc.linechargerule',string='cost_element')

但是,仅涉及ID。

我的表单:

<form string="Fiance master cost" create="true" editable="top" delete="true">
   <sheet string="Finance Master Cost">
        <group>
            <group>
                <field name="cost_element"/>
                <field name="loc"/>
                <field name="cost"/>
                <field name="created_by"/>
                <field name="activate_date"/>
            </group>
        </group>
    </sheet>
</form>

所以我真正想要的是从guimarc.linecharrule获取成本要素的列表,并在调用表单时将其作为字段cost_element的下拉列表。

1 个答案:

答案 0 :(得分:1)

3种可能性

  1. 指定字段名称

    name = fields.Char('loc',required = True)

或 2.添加属性_rec_name

_rec_name = 'loc'

当然,您要选择的字段将显示在表单中。

或3添加计算名称功能

@api.multi
@api.depends('line_type', 'loc', 'prod_type')
def name_get(self):
    result = []
    for linechargerule in self:
        result.append(
            (
                linechargerule.id,
                (
                    '{0} - {1} - {2}'.format(
                        linechargerule.line_type,
                        linechargerule.loc,
                        linechargerule.prod_type,
                    )
                ),
            )
        )
    return result