Справочник по Data Model (DM)#
Этот раздел описывает слой Data Model (DM) в RESTAlchemy.
Слой DM отвечает за:
- Объявление доменных моделей как Python-классов.
- Определение полей, типов и правил валидации.
- Описание связей между моделями.
- Предоставление mixin-классов для распространённых шаблонов (UUID, временные метки, имя/описание и т.д.).
Слой DM реализован в следующих модулях:
restalchemy.dm.modelsrestalchemy.dm.propertiesrestalchemy.dm.relationshipsrestalchemy.dm.typesrestalchemy.dm.filtersrestalchemy.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/.