Site ↗
Documentation sections
Concepts · 0.8.1

Fields: types, inputs and list behavior

Choose field types, configure forms, search and sorting, and handle existing values.

On this page

A field type determines what can be stored and how users enter it. A title needs a string, a birthday a date, and publication time a timezone-aware instant. Form settings improve input; read and write permissions are checked separately on the server.

Adding and configuring a field

In Content, open an entity and click Add field. Choose a type or preset and enter its technical name. In Basic settings, configure requirements and Presentation, the display method. Additional settings contain labels, descriptions and list behavior.

Click Finish. Fields displays the type and properties. Generate to apply these changes to the application.

Choosing a type

Type Suitable for Considerations
string, text Titles, descriptions, article text Markdown presentation adds a visual editor; the database still stores a string.
int, int64 List position, counters Values must fit the selected integer range.
float Fractional measurements Does not replace exact decimal arithmetic for arbitrary financial calculations.
bool Active or visible flags Stores true or false.
uuid UUID identifiers The type alone does not make a primary key.
date Calendar dates For example 2026-09-10.
datetime Specific instants For example 2026-09-10T09:30:00Z; timezone offsets are respected.
enum Status from a fixed set For example draft and published.
json Settings objects Validates JSON syntax; no structure-specific form is generated.
relation Related-record references For example sectionId; the field must match its relationship.
image, gallery Covers and photo collections Use file management and dedicated settings.

Requirements, constraints and defaults

required requires a value; nullable permits null. unique and indexed affect the database schema, whose changes must account for existing data. Support for min, max, length and patterns depends on the type.

Do not assume a string default automatically fills any omitted required field on the server. Check the chosen type and form behavior.

A primary key may use UUID or identity generation when the type is compatible. Identifier chooses coordinated settings. Number and UUID value create regular fields rather than primary keys.

Search, filters and sorting

Enable Searchable, Filterable and Sortable under List behavior. After Generate, API and admin use them. Fields displays these properties below Required and Primary key badges.

Search supports string and text. Filter operators and sorting depend on the type. Unsupported flags cannot add media, JSON or password fields to general search.

Hidden and Readonly

Hidden removes a field from lists and forms. During editing, its already-loaded value remains in the complete request object. If a required hidden field cannot be filled by supported generation, record creation is blocked with an explanation.

Readonly keeps a value readable and copyable during editing. Initial input during creation is allowed where supported by the form.

Both settings control the interface, not direct API access. Configure access separately.

Dates and values from an earlier model

datetime uses the browser's local time and is sent as RFC3339. An unchanged saved string is preserved. Nonexistent daylight-saving-transition times cannot be saved; ambiguous times require selecting an offset.

enum options follow manifest order. A removed old option cannot be selected for a new record. Existing records preserve it until the user deliberately changes it.

UUID, JSON and date hints illustrate formats without filling record values.

Use Rename to change names. See images and galleries for media.

Enabling identity for an existing key

For an int or int64 primary key, enable identity, Generate and apply the new migration before using the updated creation form. Generate does not apply SQL to PostgreSQL.

The migration preserves existing identifiers and relationships. The new sequence starts above the greatest existing identifier; for an empty table or nonpositive values, it starts at least at 1.

The table is locked during migration. Column, type, primary key, default and sequence are checked. Unexpected state or exhausted range stops the operation. Deleting history or renumbering records is not an appropriate fix.

This scenario does not include disabling identity, arbitrary custom defaults, type/table/primary-key changes or automatic old-contract support.

Step-by-step references

All form controls are in Content: fields. For repeatable terminal operations, use CLI: fields; types and constraints remain the same.