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.