Skip to content

Справочник по Data Model (DM)#

Этот раздел описывает слой Data Model (DM) в RESTAlchemy.

Слой DM отвечает за:

  • Объявление доменных моделей как Python-классов.
  • Определение полей, типов и правил валидации.
  • Описание связей между моделями.
  • Предоставление mixin-классов для распространённых шаблонов (UUID, временные метки, имя/описание и т.д.).

Слой DM реализован в следующих модулях:

  • restalchemy.dm.models
  • restalchemy.dm.properties
  • restalchemy.dm.relationships
  • restalchemy.dm.types
  • restalchemy.dm.filters
  • restalchemy.dm.types_dynamic (расширенные типы)
  • restalchemy.dm.types_network (сетевые типы)

В этом справочнике основной акцент сделан на первых пяти модулях, которые используются чаще всего.


Краткий обзор#

Типичная DM-модель объявляется так:

from restalchemy.dm import models, properties, types


class Foo(models.ModelWithUUID):
    # Integer field, required
    value = properties.property(types.Integer(), required=True)

    # Optional string with default value
    description = properties.property(types.String(max_length=255), default="")

Ключевые идеи:

  • Вы наследуетесь от Model или одного из вспомогательных базовых классов (ModelWithUUID и др.).
  • Вы используете properties.property() для объявления полей.
  • Вы используете классы из types.* для описания типа и ограничений каждого поля.

Связи между моделями описываются через relationships.relationship().

Фильтры (restalchemy.dm.filters) используются для задания условий выборки при работе со storage и API-фильтрацией.


Файлы в этом разделе#

  • Модели
  • Model, ModelWithID, ModelWithUUID, ModelWithTimestamp и другие mixin-классы.
  • Свойства
  • Система свойств: Property, IDProperty, PropertyCollection, PropertyManager, фабрики.
  • Связи
  • relationship(), required_relationship(), readonly_relationship(), Relationship, PrefetchRelationship.
  • Типы
  • Скаляры, даты/время, коллекции и структурированные типы для свойств.
  • Фильтры
  • Классы фильтров (EQ, GT, In и др.) и логические выражения (AND, OR).

Вы можете найти справочник DM на каждом языке в соответствующем разделе reference/dm/.