Metadata-Version: 2.4
Name: django-basemodels-rest
Version: 0.0.2
Summary: DRF-интеграция для django-basemodels — готовый сериализатор BaseModel и минимальные утилиты для работы с REST.
Author: skulap
Author-email: skulap01@gmail.com
Requires-Python: >=3.12,<4.0
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Programming Language :: Python :: 3.14
Requires-Dist: django-basemodels (>=0.0.4,<0.1.0)
Requires-Dist: djangorestframework (>=3.16.1,<4.0.0)
Description-Content-Type: text/markdown

# django-basemodels-rest

Лёгкая интеграция `django-basemodels` с Django REST Framework. Предоставляет готовый `BaseModelSerializer`, который корректно сериализует ключевые поля базовой модели: `pk`, `created_at`, `updated_at`, `active_start`, `active_end`, а также дополнительные вычисляемые поля `is_active` и `polymorphic_ctype`.

## Установка
```bash
# в том же окружении, где установлен django-basemodels и DRF
poetry add django-basemodels-rest
poetry add djangorestframework
```

## Требования
- `django-basemodels`
- `djangorestframework`

## Что даёт пакет
- `BaseModelSerializer` — `ModelSerializer`, который:
  - возвращает `is_active` по свойству `is_active_real` (учёт временных границ и состояния Celery),
  - возвращает `polymorphic_ctype` (`id` типа полиморфной модели),
  - предоставляет базовый набор полей для всех моделей-наследников `BaseModel`.

## Быстрое использование
```python
# serializers.py
from rest_framework import viewsets
from django_basemodels_rest.serializers import BaseModelSerializer
from .models import Article  # Article наследует BaseModel


class ArticleSerializer(BaseModelSerializer):
    class Meta(BaseModelSerializer.Meta):
        model = Article
        fields = BaseModelSerializer.Meta.fields + ("title", "body")
        writable_fields = ("title", "body")
```

```python
# views.py
from rest_framework import viewsets
from .models import Article
from .serializers import ArticleSerializer


class ArticleViewSet(viewsets.ModelViewSet):
    queryset = Article.objects.all()
    serializer_class = ArticleSerializer
```

## Расширение / Кастомизация
- Для добавления полей — унаследуйте `BaseModelSerializer` и добавьте нужные поля в `Meta.fields`.
- Для записи указывайте `writable_fields` в `Meta` — по умолчанию сериализатор делает все стандартные поля (`pk`, `created_at`, `updated_at`) только для чтения.


## Примечания по тестированию
- При тестах учитывайте, что `is_active` сериализуется из `is_active_real`. Для моков патчьте ту функцию, которую использует код сериализатора (в зависимости от того, как реализован импорт в `django_basemodels`).
- Подключение пакета в проект не создаёт миграций — используйте миграции ваших моделей-наследников.

## Лицензия
MIT
