我要举一个简单的例子:
我有两个 Many2one 字段dog_name
,dog_alias
,它们都指向dog
模型。此模型具有 Char 字段name
和alias
。
当我打开dog_name
的下拉菜单时,我应该看到狗的名字,当我打开dog_alias
的下拉菜单时,我应该看到狗的别名。
例如,如果我打开,我有一个记录dog
,其ID为 57 ,名称为 Fox ,别名为 Foxito dog_name
的下拉菜单中,我应该看到 Fox ,如果打开dog_alias
的下拉列表,则应该看到 Foxito 。但是,如果我选择其中任何一个,则所选记录将相同(ID为 57 的记录)。
要管理此行为,我总是将name_get
与XML上下文结合使用:
odoo - display name of many2one field combination of 2 fields
但是,这次发生了以下情况:部署dog_alias
下拉列表时,我看到了 Foxito ,效果很好,但是当我保存记录时,看到了狐狸。我猜是因为那是模型的display_name
,但是如果我这样做:
Python
@api.multi
@api.depends('name', 'alias')
def _compute_display_name(self):
for dog in self:
if self._context.get('display_name', False) == 'alias':
dog.display_name = dog.alias
else:
dog.display_name = dog.name
display_name = fields.Char(
compute='_compute_display_name',
)
dog_name = fields.Many2one(
comodel_name='dog',
string='Dog Names',
required=True
)
dog_alias = fields.Many2one(
comodel_name='dog',
string='Dog Aliases'
)
XML
<field name="dog_name"/>
<field name="dog_alias" context="{'display_name': 'alias'}"/>
问题仍然相同。 context
方法中的_compute_display_name
永远不会带来我在XML文件中设置的那个,因此,如果在保存后我在dog_alias
字段中选择了 Foxito 请参阅该字段中的 Fox ,这不是我想要的。
那么,您对如何解决这种情况有任何想法吗?