python - 从 ODOO 树视图的“添加自定义过滤器”/“添加自定义组”中删除可选属性
问题描述
我想删除出现在树视图(此处:hr.employee.tree)上的“添加自定义过滤器...”和“添加自定义组...”中的许多标准过滤器属性。
出现供选择的过滤器属性显然是树视图关联模型中的所有字段,但我不需要所有这些。
我想出了一个非常有前途的方法,它实际上可以从 Filter/Grouping 中删除这些属性,但是在同一模型的 Form-View 上保存创建/编辑时会引发异常:
## These are the fields I want to keep in "Filter by"/"Group by"
filerable_groupable_fields = ['name','phone','private_email','gender','department_id','work_email','work_phone','birthday']
@api.model
def fields_get(self, allfields=None, attributes=None):
res = super(HrEmployee, self).fields_get(allfields, attributes=attributes)
not_filerable_groupable_fields = set(self._fields.keys()) - set(self.filerable_groupable_fields)
for field in not_filerable_groupable_fields:
res[field]['selectable'] = False ## Remove from FilterBy
res[field]['sortable'] = False ## Remove from GroupBy
return res
为我在上面的循环中触及的每个字段在 Form-View 上保存时出现异常:
[...]
File "/usr/lib/python3/dist-packages/odoo/addons/hr/models/hr_employee.py", line 244, in create
employee = super(HrEmployeePrivate, self).create(vals)
File "<decorator-gen-105>", line 2, in create
File "/usr/lib/python3/dist-packages/odoo/api.py", line 343, in _model_create_multi
return create(self, [arg])
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 297, in create
tracked_fields = self._get_tracked_fields()
File "/usr/lib/python3/dist-packages/odoo/addons/mail/models/mail_thread.py", line 554, in _get_tracked_fields
return self.fields_get(tracked_fields)
File "/mnt/extra-addons/custom_swaf_hr/models/hr_employee.py", line 165, in fields_get
res[field]['selectable'] = False ## Remove FilterBy
KeyError: 'mobile_phone'
跟踪字段(mail_thread.py)似乎发生了异常。
有任何想法吗?
解决方案
我已经想通了。这是解决方案:
@api.model
def fields_get(self, allfields=None, attributes=None):
res = super(HrEmployee, self).fields_get(allfields, attributes=attributes)
not_filerable_groupable_fields = set(self._fields.keys()) - set(self.filerable_groupable_fields)
for field in not_filerable_groupable_fields:
if field in res:
res[field]['selectable'] = False ## Remove FilterBy
res[field]['sortable'] = False ## Remove GroupBy
return res
也许这对其他人也有帮助。
推荐阅读
- javascript - 如何将逗号添加到数据库中生成的数字并解析该数字以删除小数
- python - 从 json 文件中提取字段
- java - Sakai 未在 Tomcat 服务器中启动
- sharepoint - 在 sharepoint 中创建文件夹时 - 如何设置文件夹标题?
- jira - Jira REST API - 创建问题:获取工作流转换验证器中定义的必填字段
- react-native - 使用导航进入新屏幕后如何卸载挂钩
- printing - 适用于多个用户/平台的本机 VPN 服务器
- angular - Angular中的树节点选择
- javascript - nuxt项目中如何实现svelte组件?
- hive - import-hive.sh:将 Hive 导入 Apache Atlas 不会导入现有的 Hive 数据库