更新Odoo 8中的上下文

2024-04-26 01:44:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在编写一个方法,它首先将从模型中检索当前上下文,然后使用context.update()为上下文添加新值。我还尝试使用当前的方法self.with_context(),但仍然没有成功,因为上下文值似乎已冻结,无法传入。我在网上从某个来源读到,有一种方法可以覆盖名称。但消息来源只是简单的引用,不会有明确的指示让我可以遵循。我是奥多的新手,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,
           }

也请让我知道哪一个是最好的方式来修改奥多8的上下文。谢谢


Tags: 方法selfviewididsgetdatedomain
2条回答

您已经传递了新的上下文作为回报。只需删除self。使用上下文(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,
       }

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

相关问题 更多 >