我想在我的模型中添加一个选择字段。在这个选择中,我希望看到公司。我试过这样的方法,但没有成功。
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"/>