Przejdź do zawartości

Pole tekstowe w Odoo — Kompletny przewodnik dla użytkowników

Kompletny przewodnik po polu Text w modelu danych Odoo — od podstawowego zastosowania po zaawansowane dostosowania techniczne
6 marca 2026 przez
Pole tekstowe w Odoo — Kompletny przewodnik dla użytkowników
Dasolo
| Brak komentarzy na ten moment

Wprowadzenie


Pole Text w Odoo to uniwersalny typ danych do wpisywania dłuższych notatek — od opisu produktu przez uwagi wewnętrzne do komentarzy na zamówieniu. Gdy użytkownik potrzebuje więcej niż jednej linijki, trafia zwykle właśnie do pola Text.


Na ekranie wygląda jak zwykłe pole textarea, ale znajomość jego właściwości i roli w modelu danych Odoo ma znaczenie przy projektowaniu formularzy, tworzeniu modułów czy konfiguracji w Odoo Studio. Wiedza ta pozwala uniknąć nieporozumień przy wdrożeniach i dostosowaniach.

Ten przewodnik omawia, co pole Text przechowuje i jak się zachowuje, pokazuje praktyczne przypadki użycia, podpowiada jak je konfigurować, wskazuje najlepsze praktyki i najczęstsze błędy przy jego stosowaniu.

Czym jest pole Text w Odoo


W ORM Odoo pole fields.Text służy do przechowywania wieloliniowego tekstu bez formatowania. W bazie PostgreSQL odpowiada mu kolumna typu TEXT, co oznacza brak ograniczenia długości — można zapisać jedno zdanie albo obszerny opis.


W formularzach pole wyświetla się jako skalowalne <textarea>, na listach widoczne jest jako obcięty tekst, a w widokach wyszukiwania można po nim filtrować podobnie jak po polu typu Char.


Przykładowa definicja pola Text w module Python wygląda prosto i pozwala szybko dodać wewnętrzne notatki do istniejącego modelu.

from odoo import fields, models

class SaleOrder(models.Model):
    _inherit = 'sale.order'

    internal_notes = fields.Text(
        string='Internal Notes',
        translate=False,
    )

W Odoo Studio ten typ nazywa się Multi-Line Text. Studio automatycznie nadaje techniczne nazwy zaczynające się od x_studio_. Jeśli tworzysz pole z poziomu kodu lub przez API, samodzielnie określasz nazwę techniczną.


Czym różni się od Char i Html

W Odoo istnieją trzy podstawowe typy do przechowywania tekstu — wybór między nimi decyduje o wygodzie użytkowników i o możliwościach przetwarzania danych.


  • Char: jedno‑linijkowy tekst. Dobrze sprawdza się dla krótkich wartości: nazwy, kody, referencje. Można ograniczyć długość.
  • Text: wieloliniowy textarea. Najlepszy do notatek, opisów i swobodnych komentarzy. Przechowuje zwykły tekst bez znaczników.
  • Html: edytor bogatego tekstu. Przydatny tam, gdzie potrzebujesz formatowania — opisy na stronie, szablony e‑mail, treści do PDF. Przechowuje HTML.

Pole Text zajmuje środkową pozycję: daje więcej miejsca niż Char, ale nie wprowadza złożoności HTML. Dla większości wewnętrznych notatek i prostych opisów to właściwy wybór.

Jak działa to pole


Gdy dodajesz pole Text do modelu, Odoo automatycznie tworzy kolumnę TEXT w PostgreSQL podczas instalacji lub aktualizacji modułu — nie musisz pisać migracji SQL ręcznie.


W przeciwieństwie do pola Char, Text nie ma parametru size. Kolumna bazy nie narzuca limitu znaków, bo pole to jest przeznaczone na otwarte, nieograniczone treści.


Kluczowe atrybuty pola

Najważniejsze właściwości pola Text, które warto znać przy projektowaniu modeli:


  • translate: Jeśli ustawione na True, pozwala przechowywać tłumaczenia wartości dla różnych języków — przydatne w wielojęzycznych instalacjach.
  • required: Wymusza wypełnienie pola w interfejsie i na poziomie ORM — bez wartości rekord nie zostanie zapisany.
  • default: Określa wartość domyślną dla nowych rekordów — może to być stały string lub funkcja zwracająca wartość.
  • compute: Pozwala powiązać pole z metodą Pythona, która oblicza jego wartość dynamicznie — użyteczne przy automatycznych podsumowaniach.
  • store: W połączeniu z compute decyduje, czy wynik obliczeń ma być zapisany do bazy. Z store=True wartość staje się przeszukiwana i dostępna w raportach.
  • copy: Kontroluje, czy pole jest kopiowane przy duplikowaniu rekordu. Domyślnie True; ustaw False, jeśli notatki nie powinny być przenoszone.
  • index: Rzadko stosowany w Text, ponieważ indeksy B-tree nie działają tu jak w Char. Do wyszukiwania lepiej użyć pełnotekstowego mechanizmu PostgreSQL lub wbudowanych filtrów Odoo.

Jak pole wygląda w widokach

W formularzach renderuje się jako skalowalne <textarea>, na listach treść jest przycinana do szerokości kolumny, a w widoku wyszukiwania można dodać filtry tekstowe, jeśli pole zostanie uwzględnione w definicji wyszukiwania.


W odróżnieniu od Html, Text nie ładuje edytora WYSIWYG — użytkownik widzi surowe pole tekstowe bez pasków narzędzi. To, co wpisze, zapisze się dosłownie z zachowaniem złamań linii.


Interakcja z ORM Odoo

Dla dewelopera odczyt i zapis pola Text są proste — dostęp do wartości odbywa się bezpośrednio przez obiekt rekordu, a ORM zajmuje się persystencją. Złamania linii są przechowywane bez zmian. Text nie poddaje treści automatycznej sanitacji — dlatego różni się od Html, który podlega filtrowaniu pod kątem bezpieczeństwa.

Zastosowania w biznesie


Przykłady użycia w praktyce — gdzie Text pojawia się najczęściej w procesach biznesowych.


Sprzedaż: notatki wewnętrzne do zamówienia

Na zleceniach sprzedaży często pojawia się pole note lub internal_note jako Text. Przedstawiciele zapisują tam instrukcje dotyczące dostawy, specjalne opakowanie czy preferencje klienta — informacje widoczne dla zespołu operacyjnego, ale niekoniecznie drukowane na dokumentach klienta.


Magazyn: notatki wewnętrzne produktu

Na karcie produktu jest zakładka Notatki z polem Text, gdzie zespół magazynowy zapisuje wskazówki dotyczące obsługi, informacje o kruchości czy szczegóły od dostawcy. Ponieważ to zwykły tekst i nie jest publikowany z klientem, nadaje się do zapisu uwag operacyjnych.


Zakupy: warunki i instrukcje dostawy od dostawcy

Na zamówieniach zakupowych pole Text pozwala zapisać ustalenia z dostawcą lub ograniczenia dostaw potwierdzone mailowo czy telefonicznie — to zmniejsza ryzyko nieporozumień przy przyjęciu towaru.


CRM: notatki z okazji i spotkań

W CRM zespoły sprzedażowe używają pola Text do podsumowań spotkań, notatek o zastrzeżeniach klienta czy kontekście procesu zakupowego. W przeciwieństwie do wiadomości w chatterze, osobne pole Text utrzymuje informacje w strukturze łatwej do szybkiego przeglądu.


HR: uwagi o pracowniku i kandydacie

Działy HR zapisują w Text notatki z rozmów kwalifikacyjnych, uwagi onboardingowe czy obserwacje dotyczące wydajności. Pole przypięte do rekordu pracownika lub kandydata jest prostym sposobem przechowywania takich informacji bez tworzenia dodatkowych modeli.

Tworzenie i dostosowywanie pola Text


Trzy sposoby dodania pola Text do modelu, w zależności od kontekstu technicznego i procesu wdrożenia.


Odoo Studio (bez kodu)

Studio to najprostsza opcja dla użytkowników biznesowych i konsultantów, którzy nie piszą kodu. Aby dodać pole Text bez developmentu:

  1. Otwórz Odoo Studio z menu głównego (wymagana aplikacja Studio).
  2. Przejdź do formularza, na którym chcesz umieścić pole.
  3. Przeciągnij z paska Studio pole Multi-Line Text na formularz.
  4. W panelu właściwości ustaw etykietę, czy pole ma być wymagane oraz wartość domyślną.
  5. Zapisz i zamknij Studio.

Studio tworzy pole i aktualizuje widok automatycznie; techniczna nazwa dostaje prefiks x_studio_ i pole od razu jest dostępne bez migracji bazy czy restartu serwera.


W Pythonie w module niestandardowym

Gdy zmiany mają być wersjonowane i wdrażane w kilku środowiskach, pole definiuje się w kodzie Pythona — to standardowa praktyka dla produkcyjnych dostosowań Odoo:


from odoo import fields, models

class ResPartner(models.Model):
    _inherit = 'res.partner'

    x_client_notes = fields.Text(
        string='Client Notes',
        translate=False,
        copy=False,
    )

Po dodaniu definicji w pliku modelu trzeba umieścić pole w odpowiednim widoku XML, aby było widoczne w interfejsie. Odoo doda kolumnę w bazie przy instalacji/aktualizacji modułu — to zalecany sposób dla trwałych modyfikacji.


Przez API XML-RPC

Jeśli zarządzasz konfiguracją programowo, np. w skryptach wdrożeniowych, możesz tworzyć pola Text przez XML-RPC:


field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_client_notes',
        'field_description': 'Client Notes',
        'model_id': model_id,
        'ttype': 'text',
        'state': 'manual',
        'translate': False,
        'copy': False,
    }]
)

Ustawienie ttype: text instruuje Odoo, by stworzyło pole Text. state: manual wskazuje, że pole powstało poza modułem — typowe dla pól tworzonych przez Studio lub API. Taką metodę wykorzystujemy w Dasolo przy zdalnej konfiguracji pól dla klientów.

Dobre praktyki


1. Stosuj Text tylko gdy naprawdę potrzebne są wielokrotne linie

Częsty błąd to użycie Text tam, gdzie wystarczy Char. Jeśli wartość jest krótka — nazwa, kod, numer — wybierz Char. Text powinien służyć do zdań i akapitów. Użycie go do pojedynczej wartości utrudnia interfejs i myli model danych.


2. Wybierz Html, gdy potrzebujesz formatowania

Gdy treść ma zawierać listy, pogrubienia, linki lub inne formatowanie, Text nie wystarczy. Dla takich sytuacji użyj Html — Text przechowuje tylko surowy tekst i nie zapewni oczekiwanych opcji formatowania.


3. Włącz translate dla treści skierowanych do użytkowników w różnych językach

W wielojęzycznych wdrożeniach każde pole Text widoczne na dokumentach klienta lub na stronie powinno mieć translate=True. Dzięki temu tłumacze mogą wprowadzać wersje językowe bez konfliktów. Dla wewnętrznych notatek zazwyczaj nie jest to konieczne.


4. Ustaw copy=False dla notatek, które nie powinny się duplikować

Tekstowe pola są domyślnie kopiowane przy duplikowaniu rekordu. Dla kontekstowych uwag — rozmów z klientem czy problemów z dostawą — to może wprowadzać zamieszanie. W takim przypadku ustaw copy=False.


5. Używaj compute ze store=True przy automatycznych podsumowaniach

Pole Text można obliczać dynamicznie — przydatny wzorzec to pole podsumowujące kilka wartości z rekordu. Z store=True i odpowiednimi @api.depends() wynik jest zapisany w bazie i staje się przeszukiwalny w widokach listy.

Typowe pułapki


Wybranie Text, gdy potrzebne jest Html

Jeśli treść ma być potem wyświetlana na stronie WWW lub w sformatowanym raporcie, użycie Text sprawi, że wszystkie style znikną. Użytkownicy wklejający punktory czy pogrubienia zobaczą je jako zwykły tekst — warto zapytać, gdzie treść będzie pokazywana, zanim wybierzesz typ pola.


Wybranie Text, gdy wystarczy Char

Text renderuje się jako wysoki, rozciągliwy textarea. Dla krótkich wartości typu numer śledzenia czy kod wariantu to niepotrzebne obciążenie layoutu. Krótkie, jednowierszowe dane powinny być w Char.


Zapomnienie o translate dla etykiet i opisów dla wielu języków

Na instalacjach międzynarodowych brak translate=True w polu Text skierowanym do użytkowników oznacza, że wszyscy widzą tę samą treść niezależnie od ustawionego języka. To szczególnie dotkliwe przy opisach produktów — poprawka jest prosta, ale dodanie tłumaczeń po fakcie wymaga ostrożnej migracji, by nie nadpisać istniejących wartości.


Używanie Text do przechowywania danych strukturalnych

Wpisywanie JSON‑a, wartości rozdzielonych separatorem czy innych struktur w polu Text to zaproszenie do problemów. Dane o stałej strukturze powinny trafić do właściwych pól: Selection, Many2one lub osobnego modelu. Trzymanie struktury w wolnym tekście uniemożliwia filtrowanie, grupowanie i raportowanie.


Brak dodania pola do widoku wyszukiwania

Pole Text zawierające istotne informacje, które nie pojawiło się w definicji wyszukiwania, nie będzie dostępne w filtrze listy. Użytkownicy będą musieli ręcznie przeglądać zapisy. Jeśli pole ma być przeszukiwane, dodaj je do search view już przy jego tworzeniu.

Podsumowanie


Pole Text to jeden z prostych elementów w Odoo, który na pierwszy rzut oka wydaje się nieistotny, ale przy poważnym projektowaniu formularzy nabiera znaczenia.


 Wybór między Char, Text i Html to jedna z wczesnych decyzji podczas personalizacji Odoo — dobra decyzja oszczędzi czasu i problemów z jakością danych później.

Niezależnie od tego, czy dodajesz pole przez Studio, definiujesz je w module Pythona, czy tworzysz programowo przez API, opisane wzorce pomogą Ci podjąć właściwą decyzję i skonfigurować pole zgodnie z potrzebami.


Dobrze przemyślany model danych powstaje z wielu drobnych, ale konsekwentnych wyborów. Właściwy typ pola dla każdego typu informacji to jedna z takich decyzji — użyte w odpowiednim kontekście pole Text jest prostym i elastycznym narzędziem do przechowywania treści, które nie mieszczą się w strukturze pól jednoznacznych.

W Dasolo pomagamy firmom wdrażać, dostosowywać i optymalizować Odoo w całej organizacji. Wsparcie obejmuje projektowanie przejrzystego modelu danych, tworzenie niestandardowych pól i procesów oraz kompleksowe implementacje. Skontaktuj się z nami i porozmawiajmy o Twoim projekcie Odoo.

Pole tekstowe w Odoo — Kompletny przewodnik dla użytkowników
Dasolo 6 marca 2026
Udostępnij ten artykuł
Zaloguj się by zostawić komentarz