在Odoo中更新上下文8

问题描述 投票:3回答:2

我正在编写一个方法,它首先从模型中检索当前上下文,然后使用context.update()为上下文添加新值。我也尝试使用当前方法self.with_context()但仍然没有成功,因为上下文值似乎已冻结且无法传入。我从某些来源在线阅读有一种方法可以覆盖name_get()。但是来源只是简单地参考,没有明确的指示,所以我可以遵循。我是Odoo的新手,而v7和v8之间的问题就是杀了我。请帮我修改以下源代码:

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中修改上下文的最佳方法。谢谢

python openerp
2个回答
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
投票

我想如果你检查上下文的类型,你会发现它是一个冻结的字典。你应该把它改成dict context = dict(self._context)然后做你需要的所有改变然后把它变成一个冻结的字典并给

© www.soinside.com 2019 - 2024. All rights reserved.