Я хочу удалить множество стандартных свойств фильтра, которые отображаются в «Добавить настраиваемый фильтр ...» и «Добавить настраиваемую группу ...» в древовидном представлении (здесь: hr.employee.tree).
Свойства фильтра, которые появляются для выбора, очевидно, являются всеми полями в связанной модели древовидного представления, но мне не нужны все они.
Я нашел очень многообещающий способ , который фактически работает в отношении удаления этих свойств из фильтра / группировки , но вызывает исключения при сохранении создания / редактирования в представлении формы той же модели:
## 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 практически для каждого поля, которого я коснулся в l oop выше:
[...]
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).
Есть идеи?