如何在 Odoo 14 的 Many2one 字段中显示多个字段的数据?
How can I show multiple fields' data in a Many2one field in Odoo 14?
注册表格中的网站需要这些(2 个要求):
我在模型 res.users
和注册表单(网站)中添加了一个字段 zone_id
,这将 select 一个区域。我想显示另一个带有区域名称的字段值 zone_status
(一个 selection 字段),如下所示:
Zone1 - Active
Zone2 - Active
Zone3 - InActive
等等
怎么办?而且我还需要指南来将列表中的 Many2one 字段行显示到 select,就像通常在 Odoo 自己的 UI 中一样。它会自动显示,但不会在网站 page/form 中显示。目前,我将其作为文本,如何将其修改为 behave/show 作为 Many2one 字段:
<div class="form-group field-zone_id">
<label for="zone_id">Your Zone</label>
<input type="text" name="zone_id" id="zone_id" class="form-control form-control-sm"/>
</div>
对于您的第一个问题,您可以覆盖与您有 m2o 关系的模型中的 name_get 方法,并根据需要配置连接字符串。请参阅以下示例
def name_get(self):
return [(record.id, record.name) for record in self]
舰队模块示例link
@api.depends('name', 'brand_id')
def name_get(self):
res = []
for record in self:
name = record.name
if record.brand_id.name:
name = record.brand_id.name + '/' + name
res.append((record.id, name))
return res
或者用您的字符串创建一个新的计算字段。请参阅以下来自 odoo 产品类别 link
的示例
class ProductCategory(models.Model):
_name = "product.category"
#...
_rec_name = 'complete_name'
_order = 'complete_name'
name = fields.Char('Name', index=True, required=True)
complete_name = fields.Char(
'Complete Name', compute='_compute_complete_name',
store=True)
#...
@api.depends('name', 'parent_id.complete_name')
def _compute_complete_name(self):
for category in self:
if category.parent_id:
category.complete_name = '%s / %s' % (category.parent_id.complete_name, category.name)
else:
category.complete_name = category.
对于第二个问题,你可以这样读取数据。请参阅下面的示例表单 website_sale 模块 link
<div t-attf-class="form-group #{error.get('country_id') and 'o_has_error' or ''} col-lg-6 div_country">
<label class="col-form-label" for="country_id">Country</label>
<select id="country_id" name="country_id" t-attf-class="form-control #{error.get('country_id') and 'is-invalid' or ''}">
<option value="">Country...</option>
<t t-foreach="countries" t-as="c">
<option t-att-value="c.id" t-att-selected="c.id == (country and country.id or -1)">
<t t-esc="c.name" />
</option>
</t>
</select>
</div>
注册表格中的网站需要这些(2 个要求):
我在模型 res.users
和注册表单(网站)中添加了一个字段 zone_id
,这将 select 一个区域。我想显示另一个带有区域名称的字段值 zone_status
(一个 selection 字段),如下所示:
Zone1 - Active
Zone2 - Active
Zone3 - InActive
等等
怎么办?而且我还需要指南来将列表中的 Many2one 字段行显示到 select,就像通常在 Odoo 自己的 UI 中一样。它会自动显示,但不会在网站 page/form 中显示。目前,我将其作为文本,如何将其修改为 behave/show 作为 Many2one 字段:
<div class="form-group field-zone_id">
<label for="zone_id">Your Zone</label>
<input type="text" name="zone_id" id="zone_id" class="form-control form-control-sm"/>
</div>
对于您的第一个问题,您可以覆盖与您有 m2o 关系的模型中的 name_get 方法,并根据需要配置连接字符串。请参阅以下示例
def name_get(self):
return [(record.id, record.name) for record in self]
舰队模块示例link
@api.depends('name', 'brand_id')
def name_get(self):
res = []
for record in self:
name = record.name
if record.brand_id.name:
name = record.brand_id.name + '/' + name
res.append((record.id, name))
return res
或者用您的字符串创建一个新的计算字段。请参阅以下来自 odoo 产品类别 link
的示例class ProductCategory(models.Model):
_name = "product.category"
#...
_rec_name = 'complete_name'
_order = 'complete_name'
name = fields.Char('Name', index=True, required=True)
complete_name = fields.Char(
'Complete Name', compute='_compute_complete_name',
store=True)
#...
@api.depends('name', 'parent_id.complete_name')
def _compute_complete_name(self):
for category in self:
if category.parent_id:
category.complete_name = '%s / %s' % (category.parent_id.complete_name, category.name)
else:
category.complete_name = category.
对于第二个问题,你可以这样读取数据。请参阅下面的示例表单 website_sale 模块 link
<div t-attf-class="form-group #{error.get('country_id') and 'o_has_error' or ''} col-lg-6 div_country">
<label class="col-form-label" for="country_id">Country</label>
<select id="country_id" name="country_id" t-attf-class="form-control #{error.get('country_id') and 'is-invalid' or ''}">
<option value="">Country...</option>
<t t-foreach="countries" t-as="c">
<option t-att-value="c.id" t-att-selected="c.id == (country and country.id or -1)">
<t t-esc="c.name" />
</option>
</t>
</select>
</div>