Einführung
Das Boolean‑Feld gehört zu den einfachsten Datentypen in Odoo – und gleichzeitig zu den am häufigsten genutzten. Wann immer in einem Verkauf die Checkbox angeklickt wird, ein Kunde als aktiv markiert oder ein Produkt als Favorit gekennzeichnet wird, arbeiten Anwender mit einem Boolean‑Feld.
Trotz seiner Schlichtheit hat das Boolean‑Feld einige Eigenheiten, die man kennen sollte. Zu wissen, wann ein Boolean passt, wann ein anderer Feldtyp besser ist und wie man ihn richtig konfiguriert, verhindert unsaubere Datenmodelle und typische Fehler, die selbst erfahrene Teams gelegentlich machen.
Dieser Leitfaden beleuchtet das Boolean‑Feld umfassend: welche Werte es speichert, wie es sich im Datenmodell und in Views verhält, wie man es per Studio oder per Code anlegt und anpasst, typische Business‑Anwendungsfälle und pragmatische Tipps für den Alltag.
Was ist das Boolean-Feld in Odoo?
Im Odoo‑ORM speichert ein Boolean‑Feld genau zwei Zustände: True oder False. In der Datenbank entspricht das einer BOOLEAN‑Spalte in PostgreSQL. Es gibt keinen Zwischenschritt – das Feld ist entweder gesetzt oder nicht, ja oder nein.
Für Anwender erscheint ein Boolean typischerweise als Checkbox in Formularen. In Listenansichten wird bei True meist ein Häkchen-Icon angezeigt, bei False bleibt das Feld leer. Je nach Widget kann es auch als Kippschalter dargestellt werden.
So definiert man ein Boolean‑Feld in einem Python‑Modul (Beispiel):
from odoo import fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
needs_manual_review = fields.Boolean(
string='Needs Manual Review',
default=False,
)
Das Argument string legt die Beschriftung in der Benutzeroberfläche fest. default bestimmt den Anfangswert neuer Datensätze. Auch wenn Odoo fehlende Defaults als False behandelt, ist es gute Praxis, default explizit zu setzen, damit der Code klar verständlich bleibt.
In Odoo Studio heißt derselbe Feldtyp einfach Checkbox. Studio erzeugt automatisch technische Namen mit dem Präfix x_studio_. Legt man das Feld per Python oder über die API an, vergibt man den technischen Namen selbst.
Wie das Feld funktioniert
Beim Hinzufügen eines Boolean‑Felds erzeugt Odoo beim Installieren oder Updaten des Moduls automatisch die passende Spalte in PostgreSQL. Es sind keine manuellen SQL‑Migrationen nötig.
Wichtig: Ein Boolean‑Feld liefert in Odoo niemals None/NULL. Das ORM gibt immer True oder False zurück. Selbst wenn in der Datenbank kein Wert steht, wird beim Lesen False zurückgegeben. Das unterscheidet Booleans von vielen anderen Feldtypen, bei denen Leere sowohl als False als auch als None auftauchen kann.
Wesentliche Feldeigenschaften
Die wichtigsten Attribute, die Sie an einem Boolean‑Feld konfigurieren können, sind folgende:
- default: Bestimmt den Anfangszustand bei neu angelegten Datensätzen. Meistens False, in Opt‑out‑Szenarien manchmal True.
- compute: Bindet eine Python‑Methode zur dynamischen Berechnung an. Praktisch für abgeleitete Status, die sich aus anderen Feldern ergeben.
- store: In Verbindung mit compute legt store=True fest, dass der berechnete Wert in der DB gespeichert wird. Nur so lassen sich berechnete Booleans in Filtern und Berichten verwenden.
- readonly: Macht das Feld in der UI unveränderlich. Nützlich für automatisch gesetzte Flags.
- copy: Bestimmt, ob der Wert beim Duplizieren übernommen wird. Standard ist True. Bei Genehmigungsflags empfiehlt sich copy=False, damit Duplikate sauber starten.
- groups: Beschränkt Sichtbarkeit und Bearbeitungsrechte auf bestimmte Benutzergruppen.
Darstellung in Views
Im Formular ist das Boolean‑Feld ein normales HTML‑Checkbox‑Element. In Listen sieht man für True üblicherweise ein Häkchen und für False nichts – dadurch lassen sich Listen schnell visuell erfassen.
Die Darstellung lässt sich über Widgets anpassen. Das toggle‑Widget zeigt einen Schalter, ideal für Einstellungen. Für lesende Darstellungen gibt es z. B. boolean_favorite, das als Stern dargestellt wird – bekannt aus Produkt‑ oder Kontaktmasken.
Boolean‑Felder in Domains und Filtern
Boolean‑Felder sind ideale Filterkandidaten in Odoo‑Domains, die in Suchansichten, automatischen Aktionen und Zugriffsregeln verwendet werden. Ein Filter für gesetzte Flags sieht so aus:
[('needs_manual_review', '=', True)]
Da nur zwei Werte möglich sind, sind die Ausdrücke besonders knapp und klar.
[('needs_manual_review', '=', False)]
Genau diese Einfachheit macht Booleans so nützlich für automatisierte Aktionen, geplante Jobs und Server‑Aktionen: sie lassen sich leicht prüfen und auswerten, ohne komplexe Bedingungen.
Zusammenarbeit mit dem Odoo‑ORM
Beim Lesen oder Schreiben von Boolean‑Feldern im Code ist alles direkt und unkompliziert: Wert auf dem Record abfragen, mit True/False vergleichen oder zuweisen – das ORM regelt Rest. Es gibt keine Spezial‑Serialisierungen, und auch XML‑RPC überträgt True/False sauber.
Praktische Geschäftsbeispiele
Beispiele aus der Praxis
CRM: Nachverfolgen, ob ein Lead qualifiziert wurde
Sales‑Teams markieren Leads gern, die von einem Senior geprüft und als chancenreich eingestuft wurden. Ein Boolean is_qualified auf dem Lead‑Modell erlaubt einfaches Filtern: Junioren bearbeiten unqualifizierte Leads, qualifizierte werden priorisiert. Damit vermeidet man für diese Fragestellung zusätzliche Stages oder komplexe Statusfelder.
Verkauf: Kennzeichnung von Bestellungen zur manuellen Prüfung
Bei manchen Bestellungen – z. B. hoher Betrag oder neuer Kunde – ist vorher eine Freigabe nötig. Ein Feld needs_manual_review kombiniert mit einer automatischen Regel, die es setzt, bildet eine klare Warteschlange für Buchhaltung oder Operations. So lassen sich Bestellungen gezielt filtern und abarbeiten.
Lager: Produkte aus dem Sortiment kennzeichnen
Ist ein Artikel nicht mehr aktiv verkauft, aber aus historischen Gründen im System zu behalten, hilft ein Feld is_discontinued. Einkauf und Vertrieb sehen sofort, dass der Artikel nicht nachbestellt oder angeboten werden sollte. Das Feld lässt sich in Preislisten, Bestellregeln und Shop‑Sichtbarkeiten nutzen.
Buchhaltung: Rechnungen markieren, die Aufmerksamkeit brauchen
Bei strittigen Rechnungen oder solchen mit Preisabweichungen ist ein under_dispute‑Flag hilfreicher als Freitext im Chatter. Das Team kann gezielt filtern, Berichte erstellen und Mahnläufe für markierte Rechnungen unterdrücken, bis das Problem geklärt ist.
Personal: Nachweise für Schulungen und Zertifikate
Für die Personalabteilung sind Boolean‑Felder wie safety_training_completed ein schneller Weg, um Pflichtschulungen oder Zertifikate zu überwachen. Manager filtern ihre Teams nach fehlenden Nachweisen, und die Daten fließen in Compliance‑Reports, ohne dass ein eigenes Modul nötig wäre.
Boolean-Feld anlegen oder anpassen
Drei Wege, ein Boolean‑Feld hinzuzufügen
Über Odoo Studio (No‑/Low‑Code)
Studio ist das Low‑Code‑Werkzeug in Odoo, mit dem sich Felder ohne Python oder XML anlegen lassen. So geht’s:
- Studio aus dem Hauptmenü öffnen (Studio‑App erforderlich).
- Zum gewünschten Formular navigieren.
- Eine Checkbox aus der Seitenleiste per Drag & Drop ins Formular ziehen.
- Beschriftung, Default und Optionen wie read‑only im Eigenschaftenfenster einstellen.
- Studio speichern und schließen.
Studio übernimmt alles: Feld wird angelegt, erhält ein x_studio_-Präfix und erscheint in der View – kein Restart oder Modulupdate erforderlich.
Per Python im Custom‑Modul
Für Entwickler, die Anpassungen versioniert, getestet und in mehreren Umgebungen ausrollen wollen, ist die Python‑Definition der Standardweg:
from odoo import fields, models
class ResPartner(models.Model):
_inherit = 'res.partner'
x_is_key_account = fields.Boolean(
string='Key Account',
default=False,
copy=False,
)
Anschließend wird das Feld in die passende View‑XML eingebaut, damit es in der UI erscheint. Beim Installieren/Updaten des Moduls legt Odoo die Datenbankspalte an.
Für berechnete Boolean‑Felder verwendet man das folgende Muster:
from odoo import api, fields, models
class SaleOrder(models.Model):
_inherit = 'sale.order'
is_high_value = fields.Boolean(
string='High Value Order',
compute='_compute_is_high_value',
store=True,
)
@api.depends('amount_total')
def _compute_is_high_value(self):
for order in self:
order.is_high_value = order.amount_total >= 10000
Mit store=True wird der berechnete Wert in der Datenbank gehalten, sodass er in Filtern und Gruppen ohne ständige Neuberechnung verfügbar ist.
Über die XML‑RPC API
Wenn Sie Odoo‑Konfigurationen programmatisch verwalten, lassen sich Felder auch über XML‑RPC auf ir.model.fields anlegen:
field_id = models.execute_kw(
ODOO_DB, uid, ODOO_API_KEY,
'ir.model.fields', 'create',
[{
'name': 'x_needs_manual_review',
'field_description': 'Needs Manual Review',
'model_id': model_id,
'ttype': 'boolean',
'state': 'manual',
}]
)
Der Wert state: 'manual' signalisiert, dass das Feld außerhalb eines Moduls entstanden ist – passend für Studio‑ oder API‑Erstellungen und für automatisierte Konfigurationen.
Best Practices
1. Immer ein Default angeben
Obwohl Odoo fehlende Defaults als False behandelt, sollte man default=False explizit setzen. Das dokumentiert die beabsichtigte Logik und verhindert überraschendes Verhalten in Aktionen oder Filtern.
2. Beschreibende Namen wählen, die als Frage lesbar sind
Boolean‑Namen funktionieren am besten, wenn sie wie eine Ja/Nein‑Frage klingen: is_verified, needs_approval, has_warranty oder is_key_account. Vermeiden Sie vage Bezeichnungen wie flag, status oder check.
3. Für Genehmigungsflags copy=False setzen
Falls ein Flag einen Zustand beschreibt, der beim Duplizieren nicht übernommen werden soll (z. B. genehmigt), verwenden Sie copy=False. Andernfalls erscheinen Duplikate mit bereits gesetzten Status und verursachen Verwirrung.
4. Ableitungen als computed Felder modellieren
Statt serverseitig verstreute Schreibaktionen zu nutzen, legen Sie abgeleitete Zustände als computed‑Felder mit @api.depends() an. So bleibt die Logik zentral, automatisch und leichter wartbar.
5. Boolean‑Felder in Suchansichten aufnehmen, wenn sie als Filter dienen
If users regularly need to filter records based on a Boolean field, add it explicitly to the search view. In Studio, enable the search option in the field properties panel. In code, add it to the <search> view XML. This gives users a clean filter button in the search bar rather than forcing them to use advanced filters every time.
Häufige Fehlerquellen
Boolean für mehrstufige Zustände verwenden
Der häufigste Fehler ist, ein Boolean für Zustände mit mehr als zwei Möglichkeiten zu missbrauchen. Bei "pending", "approved" und "rejected" ist eine Selection oder ein sauberer Status‑Workflow die richtige Wahl. Mehrere Booleans erzeugen schnell unübersichtliche Logik.
copy=False bei Genehmigungsflags vergessen
Weil Felder beim Duplizieren standardmäßig kopiert werden, landen Flags wie "approved" auf dem Duplikat. Wenn ein Duplikat neutral starten soll, setzen Sie copy=False für solche Felder.
Feld nicht in der Suchansicht ergänzt
Fehlt ein häufig genutztes Boolean‑Feld in der Suchansicht, müssen Anwender jedes Mal den erweiterten Filter öffnen. Das verlangsamt Routinearbeiten unnötig. Legen Sie Filterfelder direkt in der Suchansicht an.
Eigenes Sichtbarkeitsfeld statt native active nutzen
Viele Modelle haben das eingebaute active‑Feld, um Datensätze auszublenden. Wenn Ihr Flag diesem Zweck dient, verwenden Sie active statt eines kundenspezifischen Felds – so bleiben Archivierung und UI‑Mechaniken konsistent.
Computed Booleans ohne store=True in Filtern
Ein nicht gespeichertes computed‑Boolean existiert nur im Arbeitsspeicher und kann nicht in SQL‑Filtern oder Gruppierungen verwendet werden. Wenn ein berechnetes Flag filterbar oder reportfähig sein soll, immer store=True setzen.
Fazit
Ein Boolean‑Feld funktioniert dann am besten, wenn es unsichtbar ist: Es macht genau das, was es soll, und fällt den Anwendern nicht auf. Ob es die active‑Flag für Sichtbarkeit, is_published für Website‑Inhalte oder individuelle Geschäftsflags sind – Booleans sind omnipräsent.
Wer die Eigenheiten des Boolean‑Felds kennt – wie Defaults, store‑Optionen und die Frage, wann man besser eine Selection nutzt – baut sauberere, vorhersagbare und wartbare Odoo‑Implementierungen.
Richtig eingesetzt ist ein Boolean unscheinbar und effektiv. Falsch eingesetzt führt er zu Irritation, inkonsistenten Zuständen und vielen zusätzlichen Workarounds. Entscheidend ist, die Regeln zu kennen und sie konsequent anzuwenden.
Bei Dasolo unterstützen wir Unternehmen dabei, Odoo in allen Bereichen zu implementieren, anzupassen und zu optimieren. Ob Datenmodell‑Design, Anpassung von Formularen oder Entwicklung kompletter Module — wir begleiten Sie. Nehmen Sie Kontakt auf und sprechen wir über Ihr Odoo‑Projekt.