Kontekst

Kontekst (context) zawiera informacje o bieżącej sesji. Może on wyglądać na przykład tak: {'lang': 'pl_PL', 'tz': 'Europe/Warsaw', 'uid': 1}, W tym przypadku mamy informację o języku, strefie czasowej i identyfikatorze użytkownika danej sesji.

Po wykonaniu akcji na stronie (na przykład kliknięciu przycisku), do kontekstu dodawana jest informacja formularza:

• active_id - klucz ID wybranego rekordu,

• active_model - model z którego pochodzi wybrany rekord,

• active_ids - lista identyfikatorów (ID) rekordów zaznaczonych w liście / drzewie (list/tree).

Kontekst może także zawierać domyślne wartości pól na formularzu. Na przykład jeśli domyślny identyfikator użytkownika możemy ustawić na uid aktualnego użytkownika (uid):

{'default_user_id': uid}

Zmiana kontekstu / środowiska odbywa się funkcją with_context:

self.env['res.partner'].with_context(tz=x).create(vals)

Możemy też zamiast

self.with_context().create(context)

Użyć alternatywy:

self = self.with_context(context)

W tym miejscu warto zauważyć, że zmienna self w Pythonie nie jest tworzona/używana niejawnie (jak ma to miejsce z this / self w niektórych językach). W przypadku modeli zawiera zbiór rekordów recordset https://www.odoo.com/documentation/online/reference/orm.html). Zmiana self nie jest więc błędem (choć burzy trochę intuicje obiektowe) - tu powoduje zmianę kontekstu w jakim wykonywane są operacje.