我想根据一些标准检索用户。我可以使用 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
查询返回 id 列表。但是当我在 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 字段中以显示用户。谢谢
最佳答案
Default 用于在您的字段上设置一个值,该方法预计会为您的 Many2one 返回一个有效值 int
,要定义默认域,请使用域属性而不是 default,该方法预计会返回一个有效的域,而不是当您在字段中进行搜索时将传递该域的 ID 列表:
domain=lambda self: [('id', 'in', self.env['rdv.rdv'].sudo().search([('nb_rdv','>=',1)]).mapped('name_student_id').ids)]
关于python - odoo 12. 我无法对 Many2one 字段进行动态过滤,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59687606/