Я пытаюсь вернуть древовидное представление в Odoo, отфильтрованное по параметру. Кто-нибудь знает, как закодировать переменную my_context представления? Мне нужно применить фильтр с полем: Father_competence_id

Фильтр определяется как:

<filter name="groupby_fathercompetence"
    context="{'group_by' : 'father_competence_id'}"
    string="Father competence" />
academic_record_lines = self.env['education.record']
for line in self:
            academic_record_lines = academic_record_lines + line.env['education.record'].search([('n_line_id', '=', line.id)])
return {
            'name': _('Academic records for {} [{}]').format(
                description, self.planification_id.teacher_id.name),
            'view_type': 'form',
            'view_mode': 'tree,form',
            'res_model': 'education.record',
            'type': 'ir.actions.act_window',
            'context': **my_context**,
            'domain': [('id', 'in', academic_record_lines.ids)],
        }

1
arevilla009 3 Дек 2019 в 13:11
Есть ли уже фильтр в окне поиска модели? Если да, как там name?
 – 
CZoellner
3 Дек 2019 в 14:59
Да, это так, это имя:
 – 
arevilla009
3 Дек 2019 в 18:30

2 ответа

Пожалуйста, используйте приведенный ниже код

my_context = dict(self._context or {})
my_context.update({'':})

Используя my_context.update, вы можете добавлять фильтры через контекст.

return {
        'name': _('Academic records for {} [{}]').format(
            description, self.planification_id.teacher_id.name),
        'view_type': 'form',
        'view_mode': 'tree,form',
        'res_model': 'education.record',
        'type': 'ir.actions.act_window',
        'context': my_context,
        'domain': [('id', 'in', academic_record_lines.ids)],
    }
0
Anitha Das B 3 Дек 2019 в 14:23
Я попытался решить проблему с помощью: my_context = dict (self._context или {}) my_context.update ({'group_by': 'Father_competence_id'}), но ошибка все еще существует.
 – 
arevilla009
3 Дек 2019 в 18:29
Используйте my_context.update ({'search_default_groupby_fathercompetence': 1}). Вы должны написать groupby в поиске, как показано ниже:
 – 
Anitha Das B
4 Дек 2019 в 12:14

Если вы знаете имя фильтра, которое обычно задается атрибутом name в записях поиска <filter>, вы можете автоматически активировать их действием, указав имя фильтра с search_default_ перед это и как значение истинное значение, например True или 1.

academic_record_lines = self.env['education.record'].search(
    [('n_line_id', 'in', self.ids)])
context = dict(self.env.context or {})
context['search_default_groupby_fathercompetence'] = True
return {
    # self.pla... only working with singleton!!!
    'name': _('Academic records for {} [{}]').format(
        description, self.planification_id.teacher_id.name),
    'view_type': 'form',
    'view_mode': 'tree,form',
    'res_model': 'education.record',
    'type': 'ir.actions.act_window',
    'context': context,
    'domain': [('id', 'in', academic_record_lines.ids)],
}
0
CZoellner 3 Дек 2019 в 19:42