odoo 12. Я не могу сделать динамический фильтр c для поля many2one - PullRequest
1 голос
/ 10 января 2020

Я хочу получить пользователей по ряду критериев. Я могу выполнить следующий запрос с помощью odoo-bin, и у меня есть пользователи, которых я хочу получить.

мой запрос:

self.env['res.users'].sudo().search([('id','in',[k.name_student_id.id for k in self.env['rdv.rdv'].sudo().search([('nb_rdv','>=',1)])])]).ids

запрос возвращает список идентификаторы. Но когда я помещаю один и тот же запрос в поле many2one, я получаю всех пользователей. Я просто не думаю, что запрос выполняется.

мой запрос в поле:

name_student_id = fields.Many2one('res.users', 'Etudiant', required=True, default=lambda self: self.env['res.users'].sudo().search([('id','in',[k.name_student_id.id for k in self.env['rdv.rdv'].sudo().search([('nb_rdv','>=',1)])])]).ids )

Мой запрос должен быть таким:

name_student_id = fields.Many2one('res.users', 'Etudiant', required=True, default=lambda self: self.env['res.users'].sudo().search([('id','in','[43,64,65]')]) )

Мне нужна помощь, и я хотел бы знать, нет ли другого способа выполнить запрос и отобразить результат в поле many2one для отображения пользователей. Спасибо

1 Ответ

1 голос
/ 11 января 2020

Значение по умолчанию используется для установки значения в вашем поле. Ожидается, что метод вернет действительное значение для вашей ведьмы many2one int, для определения атрибута домена по умолчанию для домена, который не используется по умолчанию, ожидается, что метод возвратит действительный домен, а не список идентификаторов, по которым домен будет передан при каждом поиске в вашем поле:

 domain=lambda self: [('id',  'in',  self.env['rdv.rdv'].sudo().search([('nb_rdv','>=',1)]).mapped('name_student_id').ids)]
...