如何在tryton中填充Selection字段

时间:2014-08-01 11:10:31

标签: python tryton

我在tryton中有2个模块,第一个是employee,第二个是pointage。 我正在尝试添加一个选择字段,允许我选择pointage

要做到这一点,我们必须创建一个元组pointagedef = [('', '')]列表 现在我们已经填写了但问题是我找不到任何文档来了解如何做到这一点

pointage= fields.Selection(pointagedef, 'grh.pointage')   

我正在尝试做类似的事情:

for pointage in pointages:
    pointagedef.append((pointage, pointage))

1 个答案:

答案 0 :(得分:4)

您只需使用值声明两个值元组的列表。类似的东西:

colors = fields.Selection([
   ('red', 'Red'),
   ('green', 'Green'),
   ('blue', 'Blue'),
], 'Colors')

第一个值是内部值,它将存储在数据库中。第二个值是客户端上显示的值,默认情况下是可翻译的。

您还可以传递一个函数名称,该函数名称返回两个值tupple的列表。例如:

colors = fields.Selection('get_colors', 'Colors')

@classmethod
def get_colors(cls):
   #You can access the pool here. 
   User = Pool.get('res.user')
   users = User.search([])
   ret = []
   for user in users:
      if user.email:
         ret.append(user.email, user.name)
   return ret

此外,如果要访问单个表,可以使用Many2One字段,在视图定义上添加widget =“selection”,这样客户端将呈现选择小部件而不是默认小部件,并预加载所有记录表格的选择。