Я добавил динамический c фильтр на основе кода python, используя "ir.actions.server"
, вы можете найти хороший пример его использования в модуле проекта grep --include '*.xml' -insr 'ir.actions.server'
, и в результате вы получите: views/project_views.xml:295: <record id="activate_sample_project" model="ir.actions.server">
Я добавил функцию python, которая будет возвращать отфильтрованные записи на основе некоторых условий. см. мое XML объявление:
<record id="My_server_action" model="ir.actions.server">
<field name="name">Name of my server action</field>
<field name="model_id" ref="my_module.model_my_model"/>
<field name="code">
action = model.my_python_code()
</field>
</record>
my_python_function вернет отфильтрованные записи, здесь мой python код:
@api.multi
@api.model
def my_python_function(self):
context = self._context
current_user = context.get('uid')
if codition1 :
records = self.env['my.module'].search([
('fields1', '=', val1)
])
return {
'type': 'ir.actions.act_window',
'name': _('Customer name'),
'res_model': 'my.module',
'view_mode': 'tree,form,kanban,pivot,graph',
'context': {'search_default_id': records.ids}
}
else codition2 :
records = self.env['my.module'].search([
('fields2', '=', val2)
])
return {
'type': 'ir.actions.act_window',
'name': _('Customer name'),
'res_model': 'my.module',
'view_mode': 'tree,form,kanban,pivot,graph',
'context': {'search_default_id': records.ids}
}
Проблема в названии фильтра, в нем будут отображаться идентификаторы отфильтрованный ![enter image description here](https://i.stack.imgur.com/2PR9n.png)
но если я использую другое поле в поиске по умолчанию, например: 'context': {'search_default_partner_id': self.partner_id.id}
, это покажет мне имя партнера в качестве имени фильтра
любая помощь, спасибо заранее