如何添加公司的选择字段



我想在我的模型中添加一个选择字段。在这个选择中,我希望看到公司。我试过这样的方法,但没有成功。

res_comp = fields.Many2one(comodel_name="res.company", string="TEST")
asd = fields.Selection(related="res_comp", readonly=False)

我怎么能做那样的事。

我也有一个问题。例如,用户选择一家公司";A";。我想要使用这个选择";A";函数内部。我怎么能用这个。例如

res_comp = fields.Many2one(comodel_name="res.company", string="TEST")
asd = fields.Selection(related="res_comp.name", readonly=False)
def test_func(self):
print(asd)

但它无法打印asd。

关于这两个问题,我需要帮助。谢谢你抽出时间。

Odoo将在设置相关字段时检查类型一致性

您应该在日志中看到以下错误:

TypeError: Type of related field MODEL_NAME.asd is inconsistent with res.company.name

您可以使用一种方法来获取公司列表并设置选择值

示例:

def _get_companies(self):
return [(str(c['id']), c['name']) for c in self.env['res.company'].search_read([], ['name'])]
asd = fields.Selection(selection=_get_companies, string="TEST")

要访问方法内部的选择字段,需要使用记录引用(self(:

def test_func(self):
selected_company_id = self.asd

当您访问选择字段时,Odoo将返回选择键,在上面的示例中,它将返回公司ID

要获得选择标签,可以使用fields_get方法获得字段定义,并使用选择属性获得相应选择键(self.asd(的字段标签

示例:

def test_func(self):
fields = self.fields_get(allfields=['asd'])
asd = fields['asd']
selection = asd['selection']
asd_label = dict(selection)[self.asd]

有一个选择小部件,您可以与多个21个字段一起使用,以允许选择公司。

您只需在视图定义中将字段widget属性设置为选择即可

示例

<field name="res_comp" widget="selection"/>

相关内容

  • 没有找到相关文章

最新更新