Добавить поле
Откройте persistent-сущность в Content и нажмите Add field. Выберите тип, заполните настройки и сохраните через Finish. Существующее поле открывается нажатием на его строку в Fields.
| Категория | Варианты и применение |
|---|---|
| Identifier | UUID или int64 primary key с генерацией значения БД |
| Text | string, text; также Multiline, Markdown, Password, Email, URL |
| Number | int, int64, float |
| Boolean | bool, например isVisible |
| UUID value | UUID без автоматического назначения primary key |
| Date / time | date или datetime |
| Choice | enum с заданными вариантами |
| Structured data | json |
| Image / Gallery | Одно изображение или набор |
| Relation | Связь с другой сущностью |
Если primary key уже задан, второй Identifier добавить нельзя. Выбор обычного UUID value создаёт UUID-поле, но не настраивает его как идентификатор.
Basic settings
В Field name задайте техническое имя с маленькой буквы: например, publishedAt или published_at. Через Presentation выберите способ ввода в системе администрирования. Markdown сохраняется как текст; Email и URL дают соответствующее представление. Password скрывает введённые символы, но не хеширует и не шифрует значение.
У enum перечислите неповторяющиеся варианты через запятую: draft, published, archived. В интерфейсе они появятся в том же порядке. Required требует заполнить значение, Nullable разрешает NULL. Для image и relation обязательность задаётся отдельными настройками.
Можно добавить обычное обязательное поле или включить Required у уже существующего поля без предварительного заполнения старых записей. После Generate и миграции прежние значения могут оставаться пустыми, но при создании или сохранении записи поле уже нужно заполнить. Ключи, уникальность и смена типов имеют отдельные ограничения. Подробности — миграции.
Localized: значение по языкам
Для обычного string/text-поля можно включить Localized, если у сущности уже настроены языки. Это относится и к text с Markdown-редактором. Тот же выбор доступен для всех полей сразу в Entity settings → Languages → Localized fields; подсказка у Localized указывает, где менять языки. В таблице Fields переводимое поле отмечается бейджем.
Идентификаторы, связи, enum, числа, изображения, скрытые, password- и автогенерируемые поля остаются общими. Включённый Required проверяется на основном языке, а с Require all languages — на каждом выбранном. Подробности — языки и переводы.
Advanced settings
| Параметр | Назначение |
|---|---|
| Title / Description | Подпись и пояснение в админке, без переименования ключа API |
| Default value | Значение по умолчанию совместимого типа |
| Primary key / Unique / Indexed | Ключ, уникальность и индекс |
| ID autogeneration | Генерация UUID или PostgreSQL identity для совместимого primary key |
| Readonly | Недоступность ручного редактирования в форме |
| Hidden | Скрытие в генерируемом интерфейсе; не замена серверных прав |
| Width (px) | Фиксированная ширина колонки; пусто — автоматическая |
При настройке значений используйте подходящий формат: date — 2026-09-28, datetime — RFC3339, например 2026-09-28T09:00:00Z. Для JSON default нужен поддерживаемый объект. Для bool указывайте логическое значение, а не строку "false".
Поиск, фильтры и сортировка
Откройте List behavior и включите те действия, которые нужны пользователю списка:
| Переключатель | Поведение |
|---|---|
| Searchable | Серверный текстовый поиск по string/text |
| Filterable | Типизированные условия по полю |
| Sortable | Сортировка всего результата до пагинации |
Если настройка недоступна для выбранного типа, откройте подсказку со знаком вопроса. JSON, media, hidden и представление password нельзя использовать как обычные колонки поиска и сортировки. У виртуальных сущностей эти возможности выбираются отдельно от источника.
Пример для Product: у title включите Searchable и Sortable, у status — Filterable, у position — Sortable. В приложении можно будет искать по поисковым колонкам, применять условия кнопкой Apply filters и сортировать нажатием на заголовок. Сервер объединит условия и вернёт результат; при изменении условий список перейдёт на первую страницу.
Rename и смена типа
Чтобы переименовать сохранённое поле, сначала сохраните или отмените остальные правки, затем откройте Rename. Введите имя и нажмите Preview rename: проверьте изменения API, колонки БД и ссылок модели. Confirm rename сохранит новое имя в manifest; файлы обновит Generate, а БД — миграции. Custom-код и внешние клиенты нужно исправить самостоятельно. В этой версии primary key и физические ключи связей переименовать нельзя.
Type обычного поля можно изменить до первой успешной генерации. После неё тип блокируется. Заменить поле можно последовательностью удалить → Generate → создать замену → Generate, но при применении миграций старые значения будут удалены. Для защищённых идентификаторов этот способ недоступен.
Удаление
Перед подтверждением Delete проверьте последствия удаления. Для обычной сгенерированной колонки нужно подтвердить потерю значений при применении миграции. Cancel не сохраняет черновик. После удаления обязательно откройте Preview и изучите изменения.
Дополнительно: поля через CLI, переименование.
Визуальные элементы формы
В Add field у persistent-сущности есть отдельный блок Visual elements: Heading, Heading with subtitle и Divider. Выберите элемент, задайте заголовок/подзаголовок и положение в форме. Он отображается в общем списке элементов и помогает разделить длинную карточку. Его можно редактировать, перемещать и удалять.
Это разметка record editor, а не столбец БД и не поле API: значений для фильтрации и сохранения у него нет. Для документов используйте отдельные типы File и Files.