2016-06-20 15 views
3

Ich schreibe eine Methode, die zuerst den aktuellen Kontext aus dem Modell abruft und dann mit context.update() neue Werte für den Kontext hinzufügt. Ich habe auch versucht, die aktuelle Methode self.with_context() zu verwenden, aber immer noch keinen Erfolg, da die Kontextwerte eingefroren scheinen und nicht übergeben werden konnten. Ich habe online aus einer Quelle gelesen, dass es eine Möglichkeit gibt, name_get() zu überschreiben. Aber die Quelle nur kurz darauf verweisen, es gäbe keine klare Anweisung, so dass ich folgen kann. Ich bin neu in Odoo und das Problem zwischen v7 und v8 bringt mich um. Bitte helfen Sie mir meine folgenden Quellcode zu revidieren:Aktualisierungskontext in 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, 
      } 

Bitte lassen Sie mich auch wissen, welche ist die beste Art und Weise ist der Kontext in Odoo 8. Dank

Antwort

1

Sie bereits vorbei neuen Kontext im Gegenzug zu ändern. Entfernen Sie einfach die self.with_context (context) Zeile. Wie unten Code.

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

es hat nicht funktioniert. Ich habe viele verschiedene Ansätze ausprobiert, aber der Kontext akzeptiert immer noch nicht die neuen Werte. Entschuldigung, mein Code war nicht klar. Der Code bedeutete, dass ich sowohl die alte API (context.update()) mit der neuen Methode self.with_context() ausprobiert habe. Gibt es eine andere Art und Weise? – kp2349

+0

Hallo, wo willst du diesen neuen Kontextwert? –

+0

Der Kontext hier möchte ich im Assistenten sein, in dem, nachdem ich auf die Schaltfläche "Drucken" geklickt hat, der Assistent für mich die Liste der erforderlichen Wert zurückgeben wird. Wie auch immer, ich habe herausgefunden, wie der Kontext durch Festlegen der Attribute aufgefrischt wird. Skip_invert = False. Von dort akzeptiert mein Kontext die neuen Werte, die ich hinzugefügt habe, dann suche ich einfach nach dem Kontext in meiner Suchmethode und bearbeite ihn. Meine Frage ist jetzt eine Möglichkeit, auf einen beliebigen Kontext in der Baumansicht zuzugreifen? wie Sort by Order Kontext? – kp2349

Verwandte Themen