Как заполнить поле выбора в тритоне
У меня есть 2 модуля в тритон первый employee
а второй pointage
, Я пытаюсь добавить поле выбора, которое позволяет мне выбрать pointage
,
Для этого мы должны создать список кортежей pointagedef = [('', '')]
теперь у нас есть заполнить его, но проблема в том, что я не могу найти документацию, чтобы понять, как это сделать
pointage= fields.Selection(pointagedef, 'grh.pointage')
я пытаюсь сделать что-то вроде:
for pointage in pointages:
pointagedef.append((pointage, pointage))
1 ответ
Вам просто нужно объявить список из двух кортежей значений со значениями. Что-то вроде:
colors = fields.Selection([
('red', 'Red'),
('green', 'Green'),
('blue', 'Blue'),
], 'Colors')
Первое значение будет внутренним, и оно будет храниться в базе данных. Второе значение - это значение, отображаемое на клиенте и по умолчанию переводимое.
Вы также можете передать имя функции, которая возвращает список из двух значений. Например:
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" в определении представления, чтобы клиент отобразил виджет выбора вместо стандартного и предварительно загрузил все записи таблицы в выбор.