python - odoo 12. 我无法对 Many2one 字段进行动态过滤

标签 python python-3.x odoo odoo-12

我想根据一些标准检索用户。我可以使用 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/

相关文章:

python cql 驱动程序-cassandra.ReadTimeout- "Operation timed out - received only 1 responses."

Python 列表频率

python-3.x - 在 Tensorboard 中使用 Tensorflow v2.0 显示图形

python - 添加 "encoding="utf-8"?> 到 xml 文件

css - bs4 可以解析带有 <style ='display:none;' > 的标签吗?

postgresql - Openerp 无法连接到 postgresql 数据库

postgresql - 键 (num_dossier, arrondissement_id)=(161/17, 12) 重复 PostgreSQL

python - 根据月份(而不是字母表)重新排序 DataFrame

python - PyQt lineEdit on textEdited 信号值在函数调用后丢失

python - 如何继承和修改销售订单行中的 "Name"- Odoo14