Zum Inhalt springen

Integer-Feld in Odoo: Kompletter Leitfaden für Entwickler und Anwender

Alles Wichtige zum Integer-Feld im Odoo-Datenmodell: Praxisnutzen, typische Einsatzszenarien und wie Sie es technisch anpassen
6. März 2026 durch
Integer-Feld in Odoo: Kompletter Leitfaden für Entwickler und Anwender
Dasolo
| Noch keine Kommentare

Einführung


Wenn Sie schon einmal die Bestellmenge in einem Verkaufsauftrag festgelegt, die offenen Tage einer Aufgabe erfasst oder einer Verkaufschance eine Priorität zugewiesen haben, haben Sie praktisch mit einem Integer-Feld in Odoo gearbeitet. Dieser Feldtyp ist überall im System zu finden — er wirkt unscheinbar, trägt aber oft entscheidend zu korrekten Abläufen und Berichten bei.


Ein Verständnis dafür, wie Integer-Felder sich verhalten, ist wichtig für Formulareinrichter, Entwickler, die Module bauen, und Berater, die Datenmodelle für Kunden entwerfen. Kleine Unterschiede in Verhalten und Speicherung können später großen Aufwand nach sich ziehen, wenn man sie nicht berücksichtigt.


Dieser Leitfaden erklärt, welche Art von Daten ein Integer-Feld speichert, wie es sich in Odoo verhält und angezeigt wird, wie Sie es ohne Code in Studio oder mit Python anlegen, welche praktischen Einsatzszenarien es gibt und worauf Sie besonders achten sollten.

Was ist das Integer-Feld in Odoo?


Im Odoo-ORM ist das Integer-Feld für ganze Zahlen vorgesehen — also Werte ohne Dezimalstellen. In der Datenbank entspricht es einer INTEGER-Spalte in PostgreSQL (4 Byte, vorzeichenbehaftet), die Werte von etwa -2 Milliarden bis +2 Milliarden aufnehmen kann.


Für Anwender erscheint das Integer-Feld als einfaches Zahlenfeld in Formularen beziehungsweise als Zahlen-Spalte in Listenansichten. Es eignet sich immer dann, wenn nur ganze Einheiten Sinn ergeben: Stückzahlen, Punkte, Tage, Reihenfolgen oder andere Metriken, bei denen Bruchteile keinen Zweck erfüllen.


Typische Definition in einem Python-Modul

from odoo import fields, models

class ProjectTask(models.Model):
    _inherit = 'project.task'

    estimated_hours = fields.Integer(
        string='Estimated Hours',
        default=0,
    )

Der Parameter string legt die Bezeichnung im UI fest. Mit default können Sie beim Erstellen neuer Datensätze einen Startwert vergeben.


In Odoo Studio heißt dieser Feldtyp schlicht Integer. Felder, die über Studio angelegt werden, erhalten automatisch ein x_studio_-Präfix. Bei Definition per Python oder über die API wählen Sie den technischen Namen selbst.

Wie das Feld funktioniert


Wenn Sie ein Integer-Feld definieren, erzeugt das Framework während Installation oder Upgrade automatisch die entsprechende Spalte in der Datenbank — SQL-Migrationen müssen Sie in der Regel nicht manuell schreiben.


Auf Datenbankebene ist die Spalte vom Typ INTEGER. Das ORM kümmert sich um die Typkonvertierung; ein leeres Integer-Feld liefert in Odoo standardmäßig 0 zurück, nicht None oder False. Das unterscheidet es wesentlich von anderen Feldtypen wie Float oder Char, die bei Leere False zurückgeben können.


Wichtige Feldeigenschaften

Die wichtigsten Attribute, die Sie an einem Integer-Feld einstellen können, im Überblick:

  • string: Beschriftung, die Anwender sehen.
  • default: Startwert für neue Datensätze. Ohne Angabe ist das Standard 0.
  • required: Macht das Feld verpflichtend. Da der Default bereits 0 ist, nutzen Sie das, wenn Nullwerte verhindert werden sollen.
  • readonly: Sperrt das Feld für die Bearbeitung im UI.
  • index: Legt einen PostgreSQL-Index an, um Suchen, Filter und Sortierungen zu beschleunigen.
  • compute: Verknüpft eine Python-Methode zur Berechnung des Werts aus anderen Feldern.
  • store: In Kombination mit compute bestimmt es, ob das berechnete Ergebnis in der DB gespeichert oder bei Bedarf neu berechnet wird.
  • copy: Bestimmt, ob der Wert beim Duplizieren eines Datensatzes übernommen wird.
  • groups: Beschränkt die Sichtbarkeit auf bestimmte Benutzergruppen.

Darstellung in den Ansichten

Im Formular wird ein Integer-Feld als numerisches Eingabefeld angezeigt; bei größeren Zahlen fügt Odoo automatisch Tausendertrennzeichen zur besseren Lesbarkeit ein.


In der Listenansicht erscheinen Integer-Werte als vorzeichenlose Zahlen, üblicherweise rechtsbündig. In Suchansichten unterstützen sie Filter wie Gleich, Größer als oder Kleiner als.


Mittels spezieller Widgets können Sie die Darstellung verändern: Das priority-Widget wandelt Zahlen z. B. in klickbare Sterne um, das progressbar-Widget zeigt einen Fortschrittsbalken, wenn Sie ein Maximum definieren.


Zusammenspiel mit dem Odoo-ORM

Für Entwickler ist der Umgang mit Integer-Feldern simpel: in Python sind es int-Werte. Beachten Sie aber, dass ein leeres Feld 0 zurückgibt — damit ist kein Unterschied zwischen "nicht gesetzt" und dem tatsächlichen Wert Null ersichtlich, sofern Sie das nicht extra berücksichtigen.


Integer-Felder lassen sich problemlos in berechneten Feldern, Domain-Filter und automatisierten Aktionen verwenden und arbeiten nahtlos mit dem restlichen Odoo-Framework zusammen.

Anwendungsfälle im Unternehmen


Fünf praxisnahe Einsatzszenarien


1. CRM: Lead-Scoring

Für Vertriebs-Teams ist ein Scoring-Feld hilfreich: Ein Integer-Feld "Lead Score" auf dem Opportunities-Modell erlaubt manuelle Punktevergabe oder automatische Berechnung anhand von Kriterien wie Unternehmensgröße, Budget oder Interaktionshäufigkeit.

So lassen sich Leads nach Priorität sortieren und die Aufmerksamkeit auf die wertvollsten Chancen konzentrieren.


2. Verkauf: Mindestbestellmengen

In Verkauf und Lager steuern Integer-Felder Mindestbestellmengen bei Produkten oder Preislisten. Eine Mindestmenge von 10 Stück verhindert automatisch Bestellungen darunter und spart Rückfragen mit Kunden.


3. Lagerhaltung: Nachbestellregeln

Nachbestellregeln basieren auf Integer-Feldern für Mindest- und Maximalbestände. Fällt der Vorrat unter das Minimum, löst Odoo automatisch eine Auffüllung bis zum Maximum aus — richtige Werte sind entscheidend, um Engpässe und Überbestände zu vermeiden.


4. Projektmanagement: Story Points und Aufwand

In Odoo Project setzen Teams oft ein Integer-Feld für Story Points oder geschätzte Stunden ein. Das Feld ist in Kanban- und Listenansichten sichtbar und hilft bei Kapazitätsplanung und Sprintauswertung.


5. Buchhaltung: Zahlungsbedingungen in Tagen

Zahlungsziele wie „Netto 30“ oder „Netto 60“ werden als Integer-Werte für Tage gespeichert. Diese Zahlen fließen direkt in die Fälligkeit von Rechnungen und sind wichtig für die Liquiditätsplanung.

Erstellen und Anpassen des Integer-Felds


Zwei Wege, ein Integer-Feld hinzuzufügen: ohne Code über Studio oder technisch per Python.


Mit Odoo Studio

Odoo Studio ist das integrierte No-/Low-Code-Tool für Felder und Ansichten. So legen Sie ein Integer-Feld mit Studio an:

  1. Öffnen Sie das Formular, in das das Feld soll.
  2. Aktivieren Sie Studio über das Menü oben rechts.
  3. Ziehen Sie aus der linken Feldliste den Feldtyp Integer in das Formular.
  4. Geben Sie die Beschriftung an, legen Sie fest, ob das Feld Pflichtfeld ist, und stellen Sie den Default-Wert ein.
  5. Speichern und Studio verlassen.

Studio legt das Feld mit einem x_studio_-Präfix an und speichert die Definition in ir.model.fields. Es steht sofort in Formularen und Listen zur Verfügung.


Per Python (technische Anpassung)

Wenn Sie ein Modul entwickeln oder volle Kontrolle benötigen, definieren Sie das Feld in einer Python-Modellklasse:


from odoo import fields, models

class CrmLead(models.Model):
    _inherit = 'crm.lead'

    x_lead_score = fields.Integer(
        string='Lead Score',
        default=0,
        index=True,
        help='Score from 0 to 100 used to prioritize opportunities',
    )

Nach dem Einfügen des Codes führen Sie ein Modul-Update aus (z. B. odoo-bin -u your_module); die Datenbankspalte wird automatisch angelegt.


Erstellung über die XML-RPC-API

Sie können Felder auch programmgesteuert über die XML-RPC-API anlegen — praktisch für automatisierte Deployments oder wenn Sie keinen direkten Serverzugang haben:


field_id = models.execute_kw(
    ODOO_DB, uid, ODOO_API_KEY,
    'ir.model.fields', 'create',
    [{
        'name': 'x_lead_score',
        'field_description': 'Lead Score',
        'model_id': crm_lead_model_id,
        'ttype': 'integer',
        'state': 'manual',
    }]
)

Der Wert ttype für Integer-Felder ist 'integer'; state sollte 'manual' lauten, damit das Feld als kundenspezifisches Feld erkannt wird.


Berechnete Integer-Felder hinzufügen

Computed-Integer-Felder eignen sich, um Werte automatisch abzuleiten — zum Beispiel die Anzahl offener Aufgaben eines Projekts:


class Project(models.Model):
    _inherit = 'project.project'

    open_task_count = fields.Integer(
        string='Open Tasks',
        compute='_compute_open_task_count',
        store=True,
    )

    def _compute_open_task_count(self):
        for project in self:
            project.open_task_count = self.env['project.task'].search_count([
                ('project_id', '=', project.id),
                ('stage_id.fold', '=', False),
            ])

Mit store=True wird das Ergebnis in der Datenbank persistiert, sodass es ohne ständige Neuberechnung in Filtern und Sortierungen genutzt werden kann.

Empfohlene Vorgehensweisen


Praktische Tipps für den Einsatz von Integer-Feldern


Integer für Zählwerte und ganzzahlige Größen verwenden

Nutzen Sie Integer, wenn Werte immer ganzzahlig sein müssen. Für Messwerte oder Beträge mit Nachkommastellen sind Float oder Monetary die richtige Wahl.


Sinnvollen Default setzen

Da Integer-Felder standardmäßig 0 liefern, überlegen Sie, ob Null in Ihrem Kontext aussagekräftig ist. Wenn 0 z. B. "nicht vergeben" bedeuten soll, dokumentieren Sie das oder ergänzen Sie eine Boolean-Spalte, die ausdrückt, ob der Wert bewusst gesetzt wurde.


Index setzen, wenn häufig gefiltert wird

Wenn Sie häufig nach dem Feld filtern, sortieren oder gruppieren, aktivieren Sie index=True. Der Index beschleunigt Abfragen in großen Datenbeständen; die Kosten sind meist marginal im Vergleich zum Performancegewinn.


store=True bei berechneten Integer-Feldern verwenden

Wenn ein berechnetes Integer-Feld in Filtern oder Gruppierungen genutzt werden soll, setzen Sie store=True, damit Odoo es in Domains und SQL-Abfragen verwenden kann.


Gültigkeitsbereiche dokumentieren

Geben Sie bei eingeschränkten Bereichen, etwa einem Score von 0–100, den gültigen Bereich im help-Text an. Das erspart Nutzern Fehleingaben und Rückfragen.


IDs nicht als Integer speichern

Wenn Sie auf andere Datensätze verweisen möchten, verwenden Sie Many2one-Felder statt einer rohen ID im Integer-Feld. Many2one bietet Navigation, Integrität und ORM-Funktionalität; rohe IDs sind fehleranfälliger.

Häufige Fallstricke


Typische Fehlerquellen


Integer mit Float verwechseln

Ein häufiger Fehler ist, Integer dort zu verwenden, wo Dezimalstellen nötig sind. Odoo rundet oder verwirft Dezimalanteile stillschweigend — das führt zu Datenverlust. Verwenden Sie Float für Bruchwerte und Monetary für Währungsbeträge.


Null nicht mit "nicht gesetzt" gleichsetzen

Weil leere Integer-Felder 0 zurückgeben, können Sie nicht zwischen "niemals ausgefüllt" und tatsächlich eingegebenem Nullwert unterscheiden. Wenn diese Unterscheidung relevant ist, ergänzen Sie z. B. ein Boolean-Feld has_score oder nutzen Sie einen anderen Feldtyp.


Index vergessen bei häufig genutzten Feldern

Wenn Sie ein Feld später als Filter verwenden wollen, vergessen Sie nicht index=True. Ohne Index können Filter und Listenansichten auf großen Datenmengen stark verlangsamen.


Dezimalbasierte Verhältnisse als Integer speichern

Das Abspeichern von Prozentsätzen als ganze Zahlen (z. B. 75 statt 75,0) funktioniert nur solange keine Nachkommastellen benötigt werden. Wenn auch halbe Prozentpunkte vorkommen können, nutzen Sie von Anfang an Float.


store=True bei berechneten Feldern übersehen

Ein berechnetes Integer-Feld ohne store=True kann nicht in Domain-Filtern, automatisierten Aktionen oder Gruppierungen verwendet werden. Denken Sie frühzeitig an die Nutzungsfälle, bevor Sie sich gegen Speicherung entscheiden.

Fazit


Das Integer-Feld ist ein grundlegender Baustein des Odoo-Datenmodells: schlicht, aber mit Eigenheiten, die man kennen sollte. Besonders wichtig sind die Tatsache, dass leere Felder 0 liefern und dass berechnete Felder gespeichert werden müssen, wenn sie in Filtern genutzt werden sollen — Fehler an dieser Stelle lassen sich später nur mit Aufwand korrigieren.


Ob Sie Odoo für Vertriebsteams konfigurieren, ein Modul entwickeln oder Nachbestellregeln für ein Lager aufsetzen — Integer-Felder begegnen Ihnen ständig. Zu wissen, wann Sie Integer statt Float oder Monetary einsetzen, wie Sie Felder mit Studio oder Python anlegen und wie das ORM damit umgeht, macht Ihre Odoo-Implementierung stabiler und wartungsfreundlicher.


Wenn Sie an einer Odoo-Anpassung arbeiten und sicherstellen wollen, dass Ihr Datenmodell von Anfang an sauber konzipiert ist, lohnt sich diese Basiskenntnis: sie spart Zeit und sorgt für weniger Überraschungen im laufenden Betrieb.

Mit einem Odoo-Experten zusammenarbeiten


Bei Dasolo unterstützen wir Unternehmen bei Implementierung, Anpassung und Optimierung von Odoo in allen Modulen und Branchen. Ob es um ein sauberes Datenmodell, maßgeschneiderte Felder und Workflows oder die Anbindung externer Systeme per API geht — wir bringen die Erfahrung mit, um es korrekt umzusetzen.


Wenn Sie Fragen zu Ihrem Odoo-Aufbau haben oder ein Projekt besprechen möchten, nehmen Sie Kontakt mit unserem Team auf— wir helfen Ihnen gern weiter.

Integer-Feld in Odoo: Kompletter Leitfaden für Entwickler und Anwender
Dasolo 6. März 2026
Diesen Beitrag teilen
Anmelden , um einen Kommentar zu hinterlassen