Introduktion
Tekstfeltet er en af de mest praktiske felttyper i Odoo. Hver gang en bruger udfylder et notefelt, skriver en produktbeskrivelse eller tilføjer en intern kommentar på en salgsordre, er der en god chance for, at de skriver i et tekstfelt.
Det ser ud som et simpelt tekstområde i grænsefladen, men at forstå dets egenskaber og hvordan det passer ind i Odoo-datamodellen og ORM gør en reel forskel, når du designer formularer, bygger tilpassede moduler eller opsætter Odoo Studio-felter til dit team.
Denne guide dækker alt fra hvad tekstfeltet gemmer og hvordan det opfører sig, til virkelige forretningsanvendelser, teknisk tilpasning, bedste praksis og de fejl, de fleste mennesker laver, når de vælger denne felttype.
Hvad er tekstfeltet i Odoo
I Odoo ORM er fields.Text felttypen til at gemme flere linjer almindelig tekst. Det svarer til en TEXT kolonne i PostgreSQL, uden længdebegrænsning. Brugere kan skrive en enkelt sætning eller flere afsnit, og feltet håndterer det lige godt.
I formularer vises det som et resizable <textarea> element. I listevisninger fremstår det som afkortet almindelig tekst. I søgevisninger understøtter det tekstbaseret filtrering ligesom Char-feltet.
Her er, hvordan en grundlæggende definition af et Text-felt ser ud i et Python-modul:
from odoo import fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
internal_notes = fields.Text(
string='Internal Notes',
translate=False,
)
I Odoo Studio kaldes dette felt Multi-Line Text. Når det oprettes gennem Studio, tildeler Odoo automatisk et x_studio_ præfiks. Når du opretter det gennem kode eller XML-RPC API'en, definerer du det tekniske navn selv.
Hvordan det adskiller sig fra Char og Html
Tre felttyper i Odoo kan gemme tekstindhold, og at vide, hvornår man skal bruge hvilken, er et almindeligt forvirringspunkt:
- Char-felt: Enkeltlinjet tekstinput. Bedst til korte værdier som navne, koder og referencer. Understøtter en valgfri størrelsesgrænse.
- Text-felt: Multi-linje textarea. Bedst til noter, beskrivelser og fritekstkommentarer. Gemmer almindelig tekst uden formatering.
- Html-felt: Multi-linje rich text editor. Bedst til indhold, hvor formatering betyder noget, såsom e-mail-skabeloner, produktbeskrivelser på web og websider. Gemmer HTML-markup.
Text-feltet sidder mellem de to. Det giver brugerne mere plads end et Char-felt, men uden kompleksiteten af HTML-markup. For de fleste interne noter og enkle beskrivelser er det det rigtige valg i Odoo-datamodellen.
Hvordan feltet fungerer
Når du tilføjer et Text-felt til en Odoo-model, opretter rammeværket automatisk den tilsvarende TEXT kolonne i PostgreSQL under modulinstallation eller opgradering. Der er ingen manuelle SQL-migreringer involveret.
I modsætning til Char-feltet er der ikke noget size parameter tilgængeligt på Text-felter. Databasen kolonne pålægger ingen tegnbegrænsning. Dette er med vilje: Text-felter er beregnet til åbne indhold, hvor det ikke ville give mening at begrænse længden på forhånd.
Nøglefeltattributter
De vigtigste egenskaber ved et tekstfelt i Odoo-rammen:
- oversætte: Når det er indstillet til
True, kan feltværdien oversættes pr. sprog. Nyttigt til flersprogede Odoo-instanser, hvor teksten ændres afhængigt af brugerens sprog. - påkrævet: Gør feltet obligatorisk på interface- og ORM-niveau. Brugere kan ikke gemme en post uden at udfylde det.
- standard: Indstiller en automatisk standardværdi, når nye poster oprettes. Kan være en statisk streng eller en kaldbar metode.
- beregn: Knytter en Python-metode, der dynamisk genererer feltværdien. Nyttigt til automatisk genererede resuméer eller afledt indhold.
- gem: Når det kombineres med
beregn, kontrollerer det, om den beregnede værdi gemmes i databasen. Medstore=Trueer værdien søgbar og tilgængelig i rapporter. - kopi: Kontrollerer, om feltværdien inkluderes, når en post duplikeres. Standard er
True. Sæt tilFalsefor noter, der ikke skal overføres til duplikater. - indeks: Ikke almindeligt anvendt på tekstfelter, da fuldtekstindeksering fungerer anderledes end det simple B-træindeks, der bruges til Char-felter. For søgbart indhold er PostgreSQL fuldtekst-søgning eller Odoos indbyggede filtrering generelt tilstrækkeligt.
Hvordan det vises i visninger
I formularvisninger gengives tekstfeltet som en <textarea>, som brugerne kan ændre størrelsen på lodret. I listevisninger bliver indholdet afkortet for at passe til kolonnebredden. I søgevisninger understøtter det tekstbaserede søgefiltre ud af boksen, når du tilføjer det til søgevisningsdefinitionen.
I modsætning til Html-felter indlæser tekstfeltet ikke en WYSIWYG-editor. Brugerne ser et almindeligt tekstområde uden formateringsværktøjslinje. Hvad de skriver, er præcis det, der gemmes i databasen, med linjeskift bevaret.
Interaktion med Odoo ORM
Fra en udviklers perspektiv er det ligetil at læse og skrive tekstfelter i Odoo-udvikling. Du får adgang til værdien direkte på rekordobjektet, og ORM'en håndterer al vedholdenhed. Linjeskift gemmes som de er. Der anvendes ingen automatisk sanitering eller escaping på almindelige tekstfelter, hvilket er en af grundene til, at det adskiller sig fra Html-feltet, hvor Odoo anvender sanitering for at forhindre XSS-problemer.
Forretningsanvendelser
Tekstfelter vises overalt i Odoo, hvor brugere har brug for at skrive mere end en enkelt linje. Her er fem konkrete eksempler fra virkelige forretningsarbejdsgange.
Salg: Interne Ordrenoter
Feltet note på salgsordrer og feltet internal_note, der bruges i nogle implementeringer, er tekstfelter. Salgsrepræsentanter bruger dem til at registrere leveringsinstruktioner, særlige emballagekrav eller kundepræferencer, der ikke passer ind i et struktureret felt. Disse noter følger med ordren og er synlige for driftsteams uden at blive trykt på kundedokumenter.
Lager: Produktinterne Noter
På produktformularen giver Odoo en Noter fane med et tekstfelt til interne kommentarer. Lagerteams bruger dette til at dokumentere håndteringsinstruktioner, skrøbelighedsadvarsler eller leverandørspecifik information. Da det er almindelig tekst og ikke vises på hjemmesiden eller kundedokumenter, er det sikkert at skrive operationelle detaljer, som eksterne parter ikke bør se.
Indkøb: Leverandørbetingelser og Leveringsinstruktioner
På indkøbsordrer giver et tekstfelt til leverandørenoter indkøbsteams mulighed for at dokumentere specifikke aftaler eller leveringsbegrænsninger, der blev bekræftet over e-mail eller telefon. At have disse oplysninger knyttet til ordreoptegnelsen forhindrer misforståelser, når varerne ankommer, og den oprindelige samtale ikke længere er let at finde.
CRM: Mulighedsresuméer og Mødenoter
Salgs teams, der arbejder gennem CRM-pipelinen, tilføjer ofte et tekstfelt til mulighedsoptegnelser for fritekstnoter fra kundemøder, indvendinger eller kontekst om købsprocessen. I modsætning til chatterbeskeder holder et dedikeret tekstfelt disse oplysninger struktureret og letlæselige ved første øjekast, når en anden tager føringen.
HR: Kommentarer fra medarbejdere og ansøgere
HR-teams har ofte brug for at indfange interviewnotater, onboarding-kommentarer eller præstationsobservationer i et felt, der forbliver knyttet til medarbejder- eller ansøgeroptegnelsen. Et tekstfelt på medarbejdermodellen er en ren, enkel måde at gemme dette på uden at oprette en separat model. Det er søgbart, printbart og nemt at inkludere i tilpassede HR-rapporter.
Oprettelse eller tilpasning af tekstfeltet
Der er tre hovedmåder at tilføje et tekstfelt til en Odoo-model, afhængigt af din tekniske kontekst og implementeringstilgang.
Brug af Odoo Studio (Ingen kode)
Odoo Studio er den nemmeste vej for forretningsbrugere og konsulenter, der ikke ønsker at skrive kode. For at tilføje et tekstfelt uden udviklingsarbejde:
- Åbn Odoo Studio fra hovedmenuen (kræver Studio-appen).
- Naviger til den formular, hvor du ønsker feltet.
- Træk et Multi-Line Text felt fra Studio-sidepanelet ind på formularen.
- Indstil etiketten, påkrævet status og eventuel standardværdi i feltets egenskabspanel.
- Gem og luk Studio.
Studio håndterer automatisk feltoprettelsen og opdateringen af visningen. Feltet får et x_studio_ præfiks og er straks tilgængeligt på formularen uden nogen database-migrering eller server-genstart.
Brug af Python i et tilpasset modul
For enhver tilpasning, der skal versionsstyres og implementeres på tværs af flere miljøer, er det rigtige valg at definere feltet i Python. Dette er standard Odoo udviklingspraksis:
from odoo import fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
x_client_notes = fields.Text(
string='Client Notes',
translate=False,
copy=False,
)
Efter at have defineret feltet i model-filen, skal du tilføje det til den relevante visning XML, så det vises i grænsefladen. Odoo opretter automatisk databasekolonnen, når du installerer eller opgraderer modulet. Dette er den anbefalede tilgang til enhver produktions-Odoo-tilpasning, der skal vedligeholdes over tid.
Brug af XML-RPC API
Hvis du administrerer Odoo-felter programmatisk, for eksempel som en del af et deploymentskript eller en fjernkonfigurationsnotebook, kan du oprette tekstfelter via XML-RPC API:
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,
}]
)
Værdien ttype: text fortæller Odoo at oprette et tekstfelt (i modsætning til char for et Char-felt eller html for et Html-felt). Indstillingen state: manual angiver, at dette felt blev oprettet uden for et modul, hvilket er korrekt for felter oprettet gennem Studio eller programmatisk via API'en. Dette er den tilgang, Dasolo bruger, når de implementerer fjernfeltkonfigurationer for kunder.
Bedste praksis
1. Brug Text, når indholdet virkelig har brug for flere linjer
Den mest almindelige fejl er at række ud efter et tekstfelt, når et Char-felt ville være tilstrækkeligt. Hvis værdien er et navn, en kode, en reference eller noget, der kan være på én linje, så brug Char. Forbehold Text til indhold, hvor brugerne forventes at skrive sætninger eller afsnit. At bruge et tekstfelt til en kort enkeltværdi skaber en klodset brugeroplevelse og en misvisende datamodel.
2. Brug Html, når formatering betyder noget
Hvis brugerne har brug for at tilføje punktlister, fed tekst, hyperlinks eller enhver visuel formatering til indholdet, er tekstfeltet det forkerte valg. Brug i stedet et Html-felt. Tekstfelter understøtter kun almindelig tekst. At bede brugerne om at skrive formateret indhold i et almindeligt tekstområde vil føre til frustrerede brugere, der forventer formateringsmuligheder, som ikke er der.
3. Aktivér oversættelse for brugerrettede flersprogede indhold
I virksomheder, der kører Odoo på flere sprog, bør ethvert tekstfelt, der vises på kundevendte dokumenter eller hjemmesiden, have translate=True. Dette giver oversættere mulighed for at levere sprog-specifikke versioner af indholdet uden at overskrive hinandens arbejde. For interne noter og operationelle kommentarer, som brugerne selv skriver, er oversættelse normalt ikke nødvendig.
4. Sæt copy=False for noter, der ikke skal duplikeres
Når brugere duplikerer en salgsordre eller et produkt, kopieres tekstfelter som standard. For noter, der fanger kontekst specifik for den originale post, såsom en kundesamtale eller et specifikt leveringsproblem, kan dette skabe forvirring. Sæt copy=False på disse felter, så duplikerede poster starter med en ren notissektion.
5. Brug compute med store=True for automatisk genererede opsummeringer
Tekstfelter kan beregnes dynamisk i Odoo. Et nyttigt mønster er at opbygge et automatisk genereret opsummeringsfelt, der sammenkæder værdier fra andre felter på posten. Med store=True og de passende @api.depends() triggere gemmes den beregnede tekst i databasen og bliver søgbar i listevisninger og filtre. Dette er en praktisk Odoo-beregnet feltteteknik til at skabe lette interne opsummeringer uden at opbygge en separat rapport.
Almindelige faldgruber
At vælge Text når Html er nødvendigt
Hvis et felt er beregnet til at indeholde indhold, der vises på hjemmesiden eller i en formateret PDF-rapport, vil brugen af Text i stedet for Html fjerne al formatering. Brugere, der indsætter indhold med punkttegn eller fed tekst i et Text-felt, vil se det gengivet som flad, uformateret prosa. Spørg altid, om outputkanalen har brug for formatering, før du vælger felttypen.
At vælge Text når Char er den rigtige løsning
Et Text-felt gengives som et højt, resizable tekstområde. Hvis et felt kun nogensinde skal indeholde en kort værdi som et sporingsnummer eller en produktvariantkode, gør brugen af Text formularen unødvendigt klodset. Enkeltlinjeindhold hører hjemme i et Char-felt, som gengives som et kompakt tekstinput, der passer naturligt ind i en formularlayout.
At glemme at oversætte på flersprogede etiketter og beskrivelser
På Odoo-instanser, der er implementeret i flere lande, betyder manglende translate=True attribut på et brugervenligt Text-felt, at alle brugere ser den samme værdi uanset deres sprogindstilling. Dette er især problematisk for produktbeskrivelser og kategorinoter, der er synlige i grænsefladen. Løsningen er ligetil, men at tilføje det efter data allerede er i systemet kræver en omhyggelig migration for at undgå at overskrive eksisterende værdier.
At bruge Text til strukturerede data
Et Text-felt, der gemmer JSON, pipe-separerede værdier eller andre håndlavede strukturerede formater, er et vedligeholdelsesproblem, der venter på at ske. Hvis data har en konsekvent struktur, bør det gemmes i de passende Odoo-felttyper: Selection for faste muligheder, Many2one for relationer, eller en relateret model med de rette felter. At kode struktur inde i et frit tekstfelt gør det umuligt at filtrere, gruppere eller rapportere på dataene pålideligt.
Ikke at tilføje feltet til søgevisningen
Et tekstfelt, der indeholder vigtig information, men ikke er inkluderet i modellens søgevisning, kan ikke filtreres fra listevisningens søgefelt. Brugere ender med at scrolle gennem poster for at finde det, de har brug for, i stedet for blot at skrive et nøgleord. Hvis et tekstfelt gemmer information, som brugerne vil søge efter, skal det tilføjes til søgevisningsdefinitionen, når feltet oprettes.
Konklusion
Tekstfeltet er en af de byggesten i Odoo-rammen, der ser uanselig ud, indtil du begynder at designe formularer seriøst.
At vælge mellem Char, Text og Html er en af de første beslutninger, du står overfor i ethvert Odoo-tilpasningsprojekt, og at få det rigtigt fra starten undgår omarbejdning og datakvalitetsproblemer senere hen.
Uanset om du tilføjer et notefelt gennem Odoo Studio, definerer det i et Python-modul eller opretter det programmatisk via API'en, vil mønstrene i denne guide hjælpe dig med at træffe den rigtige beslutning og konfigurere feltet korrekt til dit brugsscenarie.
En veludformet Odoo-datamodel er bygget på små, velvalgte beslutninger. At vælge den rigtige felttype til hver informationsdel er en af dem, og tekstfeltet, brugt i den rigtige kontekst, er et pålideligt og fleksibelt værktøj til at indfange den slags indhold, der ikke passer pænt ind i strukturerede felter.
Hos Dasolo hjælper vi virksomheder med at implementere, tilpasse og optimere Odoo på tværs af alle afdelinger. Uanset om du har brug for hjælp til at designe en ren datamodel, bygge brugerdefinerede felter og arbejdsgange, eller opsætte en fuld Odoo-implementering fra bunden, er vores team her for at støtte dig. Kontakt os og lad os tale om dit Odoo-projekt.