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.