Skip to content

skulap/django-basemodels-rest

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

django-basemodels-rest

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

Установка

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

Требования

  • django-basemodels
  • djangorestframework

Что даёт пакет

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

Быстрое использование

# 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")
# 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

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages