我希望选择的内容取决于Char字段的值,例如,这样定义的Char字段:
my_char = fields.Char("Enter Something", readonly = False)
所以我想选择字段应该调用一个函数,例如“ _get_value”
my_selection = fields.Selection(selection = ' _get_value')
@api.model
def _get_value(self):
my_list = [('key1','value1')]
#no idea how to assign the value of my_char to value1
return my_list
最终,随着用户在my_char中输入不同的字符串,我希望下拉列表中的选择有所不同。
在Odoo中可以实现吗?因为如果不是这样,我最好开始重新组织我的结构。非常感谢。
答案 0 :(得分:0)
据我所知,字段类型Selection
是不可能的。但是您可以使用Many2one
字段来实现这种行为。
class MySelectionModel(model.Models):
_name = "my.selection.model"
name = fields.Char()
class MyModel(models.Model):
_name = "my.model"
my_char = fields.Char()
my_selection_id = fields.Many2one(
comodel_name="my.selection.model", string="My Selection")
@api.onchange("my_char")
def onchange_my_char(self):
return {'domain': {'my_selection_id': [('name', 'ilike', self.my_char)]}}
或者没有onchange方法:
my_selection_id = fields.Many2one(
comodel_name="my.selection.model", string="My Selection",
domain="[('name', 'ilike', my_char)]")
要使Many2one
字段看起来像一个选择,请在表单视图的该字段上添加widget="selection"
。
域的外观应由您决定。这只是一个例子。
答案 1 :(得分:0)
无需在此处编写方法。只需将字典声明为变量,然后在选择字段中调用它即可。
VAR_LIST = [('a','ABC'),
('p','PQR'),
('x','XYZ')]
my_selection = fields.Selection(string="Field Name",VAR_LIST)