【发布时间】:2021-04-08 16:20:48
【问题描述】:
我已经尝试了所有方法并到处寻找答案,但我没有成功。
我想实现一个自定义函数来检索 Many2one 选择列表的过滤值。 通常您会为此使用域,但给出的域选项不足以实现我的目标。
我必须重写什么函数来修改给定 Many2one 字段的选择列表?
谢谢, 拉尔斯
更新:
感谢您的回答。我使用name_search 来分析生成的WHERE 子句。
以下是我想要实现的目标和迄今为止的发现:
programs = fields.Many2many(
comodel_name='hr.program',
relation='hr_process_onboarding_wizard_programs')
program_department = fields.Many2one(
comodel_name='hr.department',
domain="[('programs', 'in', programs)]")
字段 programs 表示为 many2many_checkboxes 小部件。
当我选择 2 个值时,以下域过滤器被传递给 name_search:['programs', 'in', [1, 2]]
这将生成以下 SQL 查询(有趣部分的摘录):(SELECT "hr_department_id" FROM "hr_programs_departments" WHERE "hr_program_id" IN (1,2))
结果列表当然是程序 [1,2] 的 UNION,但我希望程序 [1,2] 的 INTERSECTION。
Afaik 没有域过滤器来获取交集。
更新 2:
在考虑了给定的过滤器运算符之后,我希望 = 完全符合我的要求,但运算符 = 正在生成与 in 相同的 WHERE 子句。
【问题讨论】:
-
请提供输入数据样本和所需输出
-
第一个猜测:覆盖
name_search()