2016-06-20 7 views
3

Я пишу метод, который сначала будет извлекать текущий контекст из модели, а затем использовать context.update() для добавления новых значений для контекста. Я также попытался использовать текущий метод self.with_context(), но все равно не добился успеха, поскольку значения контекста кажутся замороженными и не могут быть переданы. Я читал в Интернете из какого-то источника, что есть способ переопределить имя_get(). Но источник только кратко ссылается, не будет четкой инструкции, чтобы я мог следовать. Я новичок в Odoo и проблема между v7 и v8 убивает меня. Пожалуйста, помогите мне пересмотреть свой следующий исходный код:Обновление контекста в Odoo 8

def get_print_report(self): 
    domain = [('effective_date', '>=', self.from_date), 
       ('effective_date', '<=', self.to_date), 
       ('employee_id', 'in', self.employee_ids.ids), 
       ('department_id', '=', self.department_id.id), 
       ('job_id', '=', self.job_id.id)] 
    list_view = self.env.ref(
     'trainingwagekp.payroll_wage_hist_wizard_tree_view') 
    context = self._context.copy() 
    if context is None: 
     context = {} 
    if context.get('order_by', False): 
     context.update({'default_order': self.order_by + ' desc'}) 
    self.with_context(context) 
    print '===============', self._context 
    return{'name': 'Wage History Report', 
      'view_type': 'form', 
      'view_mode': 'tree', 
      'view_id': list_view.id, 
      'res_model': 'trobz.payroll.wage.history', 
      'type': 'ir.actions.act_window', 
      'context': context, 
      'domain': domain, 
      } 

Пожалуйста, дайте мне знать, что является лучшим способом изменить контекст в Odoo 8. Благодаря

ответ

1

Вы уже умирала новый контекст в ответ. Просто удалите строку self.with_context (context). Как указано ниже.

def get_print_report(self): 
domain = [('effective_date', '>=', self.from_date), 
      ('effective_date', '<=', self.to_date), 
      ('employee_id', 'in', self.employee_ids.ids), 
      ('department_id', '=', self.department_id.id), 
      ('job_id', '=', self.job_id.id)] 
list_view = self.env.ref(
    'trainingwagekp.payroll_wage_hist_wizard_tree_view') 
context = self._context.copy() 
if context is None: 
    context = {} 
if context.get('order_by', False): 
    context.update({'default_order': self.order_by + ' desc'}) 
return{'name': 'Wage History Report', 
     'view_type': 'form', 
     'view_mode': 'tree', 
     'view_id': list_view.id, 
     'res_model': 'trobz.payroll.wage.history', 
     'type': 'ir.actions.act_window', 
     'context': context, 
     'domain': domain, 
     } 
+0

это не сработало. Я пробовал много разных подходов, но контекст все еще не согласен с новыми значениями. Извините, мой код не ясен. этот код означал, что я попробовал и старый api (context.update()) с новым способом self.with_context(). Есть ли другой способ? – kp2349

+0

Привет, где вы хотите получить новое значение контекста? –

+0

Контекст здесь я хочу быть в мастере, в котором после того, как я нажал кнопку «Печать», мастер вернет мне список требуемого значения. Тем не менее, я узнал, как разморозить контекст, установив его атрибуты skip_invert = False. Оттуда, мой контекст примет новые значения, которые я добавил к нему, тогда я просто ищу контекст в методе поиска и обработаю его. Мой вопрос прямо сейчас есть способ получить доступ к любому контексту в Tree View? например, сортировать по порядку? – kp2349