Siso Smart Fields

No-Code Custom Fields for Any Odoo Model

Extend Odoo Without Writing a Single Line of Python

Contents

Introduction

About Siso Smart Fields

Siso Smart Fields is a bespoke no-code tool designed to bring advanced database customization to Odoo Community Edition, while functioning as a robust, parallel enhancement for Enterprise users. It lets administrators create custom database columns on any Odoo model directly from a simple Settings interface—with no Python code and no server restarts required.

A Parallel Tool for Every Edition

While the primary goal of Siso Smart Fields is to provide Community users with a capability typically reserved for Enterprise Studio, it is built with an architecture that respects and enhances both environments:

Native Database Performance

Fields created with Siso Smart Fields are real database columns. They are immediately available to Odoo's built-in filter and group-by tools, to server actions and automations, to reports, and to any custom scripts or integrations that query the database. There is no intermediate layer—the data is stored natively in the same PostgreSQL tables used by Odoo's own fields.

Beyond storage, Smart Fields can optionally inject the field directly onto the model's default form view. The placement is configurable: choose the notebook tab, the named section within that tab, and—where the section has a two-column layout—the left or right column.


Part 1
User Guide

What users can do with custom fields once they have been created and placed on a form.

Chapter 1

Using Custom Fields

Custom fields created with Smart Fields appear on form views just like any native Odoo field. There is no visual distinction that marks a field as custom — it has a label, an input control, and optionally a ? tooltip icon if the administrator has added a help text.

Figure 1.1: Custom Fields on a Product Form
Custom fields visible on a product form
Fields labelled Internal memo, Material, Properties, and Files are all custom fields added with Smart Fields.

Custom fields are fully integrated with Odoo's standard interface:

Finding the Technical Name

Every custom field's full database column name is shown in the field definition form as Full Field Name. The format is always x_siso_<name>, for example x_siso_visma_id.

Chapter 2

Field Types Reference

Smart Fields supports ten field types. Each type stores data natively in the Odoo database and renders with the appropriate widget on form views.

TypeStorageWidgetBest for
Text / VARCHARvarchar(n)Single-line inputShort identifiers, codes, names
Text / MultilinetextTextareaNotes, descriptions, instructions
Integerint4Number inputCounts, quantities, IDs
Float / Decimalfloat8Number inputMeasurements, scores, prices
BooleanboolToggleYes/No flags, switches
DatedateDate pickerDeadlines, dates of birth, expiry
Date & TimetimestampDatetime pickerEvents, timestamps
Selection / DropdownvarcharSelect menuStatus, classification, category
Tags / Multi-selectmany2manyTag chipsKeywords, attributes, labels
Files / Attachment listmany2manyFile listDocuments, drawings, PDFs
Figure 2.1: Example of Defined Custom Fields
Field type selector showing available types
Field Type is Locked After Creation

Once a field has been created and the database column provisioned, the Field Type, Field Name, and Target Model cannot be changed. To change the type, delete the field and create a new one. Deletion is a permanent operation — see Chapter 9.

Chapter 4

File Attachments

The Files / Attachment list type adds a file management section directly to any form. Files are stored in Odoo's private attachment model, separate from the chatter attachments on the same record.

Figure 4.1: File List on a Product Form
File attachment list showing multiple files with type icons, labels, and action buttons
Each file shows a type icon, a user-defined label, and buttons for preview and download.

Each row in the list displays:

Adding a File

1
Click Add a line below the file list.
2
In the dialog that opens, enter a Label (e.g. "Q1 2026 SAF-T Export") and click the File field to select the file from your computer.
3
Click Save. The file appears in the list with its type icon.
Figure 4.2: File Upload Dialog
Add file dialog showing Label and File fields
Editing a File

Click any row in the file list to open the dialog again. You can change the label or replace the file without deleting and re-uploading.

Configuring the Row Limit

By default, the list shows up to 4 rows before displaying a Load more link. Administrators can change this limit per field using the Max visible rows setting in the field definition — see Chapter 6.


Part 2
Administration

Creating, configuring, placing, and removing custom fields.

Chapter 5

Installing Siso Smart Fields

Siso Smart Fields requires Siso Smart Hub to be installed first. Smart Hub provides the Siso Smart Suite section in the Settings menu where Smart Fields appears.

1
Install Smart Hub: If not already installed, activate Siso Smart Hub first — see Smart Hub installation guide.
2
Update Apps List: Navigate to Apps, enable Debug Mode, and click Update Apps List.
3
Search and activate: Search for siso smart fields and click Activate.

After activation, Custom Fields appears under Settings → Technical → Siso Smart Suite.

Odoo.sh Deployment

On Odoo.sh, push the siso_smart_fields module directory to your custom addons branch. Both siso_smart_hub and siso_smart_fields must be present. Odoo.sh will install them automatically if they appear in the Apps list.

Chapter 6

Creating Custom Fields

Navigate to Settings → Technical → Siso Smart Suite → Custom Fields and click New.

Required Fields

Target Model
The Odoo model to add the field to. Start typing the model's display name (e.g. Product, Contact, Sale Order) to search. The field will be added to the underlying database table for this model.
Label
The display name shown to users on form views and in filter/group-by menus. Can be changed after creation.
Field Name
The internal database identifier. Must start with a lowercase letter and contain only lowercase letters, digits, and underscores. Stored as x_siso_<field_name>. Cannot be changed after creation.
Field Type
The data type. Cannot be changed after creation. See Appendix A for a quick reference.

Type-Specific Parameters

Additional fields appear depending on the selected type:

Save to Provision

Saving the field definition immediately creates the database column. The field is available to filters, automations, and scripts the moment the record is saved — no restart needed.

Tooltip

An optional Tooltip text field appears in the Display section when Show on Form is enabled. Enter any text here and a ? icon will appear next to the field label on the form, showing the tooltip text on hover — identical to how Odoo documents its own built-in fields.

Chapter 7

Form View Placement

Enable Show on Form to inject the field into the model's default form view. Three placement controls appear once enabled:

Target Tab

Select the notebook tab where the field should appear. The dropdown lists all named tabs from the model's form view. The first option, Automatic (above tabs), places the field in a "Custom Fields" group above the notebook — useful for models with few or no tabs.

Target Section

Once a specific tab is selected, a second dropdown lists all named sections (groups with visible headers) within that tab. Leaving this blank places the field at the tab level. Selecting a section places the field at the bottom of that section's content.

Figure 7.1: Placement Controls
Product form showing custom fields placed inside specific tabs and sections
The Internal memo, Material, Properties, and Files fields are each placed in different sections of the General Information tab.

Column

Appears only when the selected section has a two-column internal layout. Choose Left or Right to target a specific column. When a column is selected, the field blends in organically with surrounding fields — the "Custom Fields" section header is omitted.

Refresh Tab List

If a tab or section you expect is not in the dropdown, click Refresh tab list. This re-reads the current form view and updates the available options — useful after installing a new module that modifies the target form.

Multiple Fields, Same Model

Each field has independent placement settings. You can place different fields in different tabs and sections on the same model. All fields for the same model share a single injected view record — changing any field's placement regenerates the shared view automatically.

Chapter 8

Managing and Updating Fields

Open any field definition from Settings → Custom Fields to make changes. The following properties can be updated after creation:

Locked Properties

The following properties are locked after the field is first saved: Target Model, Field Name, and Field Type. These define the physical database column structure and cannot be changed without deleting and recreating the field.

Chapter 9

Deleting Fields Safely

Open the field definition and click the red Delete Field & Data button at the top of the form. A confirmation dialog appears before any data is removed.

1
The form injection view for this field is removed. If other fields share the same model's injected view, those placements are preserved.
2
The ir.model.fields database record and the underlying column are dropped from the model's table.
3
For Tags fields, the associated private options model is also removed. For Files fields, the inverse relationship field is cleaned up.
4
The Smart Fields definition record itself is deleted.
This Operation is Permanent

Deleting a field removes all stored data for that field across every record in the system. This cannot be undone. Always back up your database before deleting fields that contain important data.

References in Other Objects

If the field is referenced in saved filters, server actions, or automation rules, those references will break after deletion. Odoo does not automatically clean up references to deleted fields in these objects — review and remove them manually beforehand.

Chapter 10

Adopting Orphaned Fields

An orphaned field is an x_siso_-prefixed column that exists in the database but has no corresponding Smart Fields definition record. This can occur after a database migration, a manual SQL operation, or if the definition record was deleted directly from the database.

To bring orphaned fields back under management, open the Custom Fields list view and click the Adopt Orphaned Fields action button in the action menu. Smart Fields will scan for all x_siso_ columns without a definition and create one for each, restoring management control.

After Adoption

Adopted fields are created with minimal metadata — label derived from the field name, type inferred from the column type. Review each adopted field and update the label, add placement settings, and configure any type-specific options that apply.


Appendix A
Field Type Quick Reference

Summary of all available field types and their key properties.

TypeDB ColumnConfigurable ParametersLocked after save?
Text / VARCHARvarchar(n)Max Length (default 255)Type, Field Name, Model
Text / MultilinetextType, Field Name, Model
Integerint4Type, Field Name, Model
Float / Decimalfloat8Precision (e.g. 16,2)Type, Field Name, Model
BooleanboolType, Field Name, Model
DatedateType, Field Name, Model
Date & TimetimestampType, Field Name, Model
Selection / DropdownvarcharOptions listType, Field Name, Model
Tags / Multi-selectmany2many tableOptions list (pre-populated)Type, Field Name, Model
Files / Attachment listmany2many tableMax visible rows (default 4)Type, Field Name, Model

Appendix B
Options Text Syntax

How to format the Options field for Selection and Tags field types.

Supported Formats

The Options text area accepts three formats, which can be mixed within the same field:

Plain Labels (simplest)

One label per line. The label is used as both the stored value and the display value.

Metric
Steel
Insulated grip
Premium

Key,Label Pairs

One pair per line in value,Display Label format. The value is what gets stored in the database; the label is what the user sees. Use this when integrations depend on specific stored codes.

metric,Metric System
imperial,Imperial System
not_specified,Not specified

JSON Array

Paste a JSON array of [value, label] pairs directly. Useful when copying option lists from another system.

[["metric", "Metric System"], ["imperial", "Imperial System"], ["other", "Other"]]
Blank Lines Are Ignored

Empty lines in the Options text are silently skipped. Lines without a comma are treated as plain labels (value = label).

Updating Options

Edit the Options text and save the field definition. For Selection fields, the full options list is replaced. For Tags fields, new entries are added to the tag pool — entries removed from the Options text remain in the database (and on existing records) but will no longer appear as suggestions in the tag input.

Changing Selection Values

If you rename a stored value in a Selection field's options (e.g. change metric to metric_si), any records that already have metric stored will display a blank or invalid value. Always migrate data before renaming stored values.