Skip to main content

Библиотека создания моделей вложенных сериализаторов

Project description

NESTED SERIALIZER CREATE SERVICE

Installation

Установка через PyPi:

pip install nescs

Description

Данная библиотека позволяет автоматически создавать объекты во вложенных сериализаторах. Работу по созданию вложенных объектов берет на себя сервис - SerializerCreateService. Он поддерживает создание объектов в случаях

  1. Many to many

  2. One to one

  3. Foreign key

Examples

Ниже расположено несколько примеров использования библиотеки на различных вариантах связи между моделями

Many to many case

Для создание объектов с отношением m2m используется метод create_m2m_instances

Пример кода для случая m2m:

class PublicationSerializer(serializers.ModelSerializer):
    class Meta:
        model = Publication
        fields = (
            'id',
            'title',
        )


class ArticleSerializer(serializers.ModelSerializer):
    publications = PublicationSerializer(
        many=True
    )

    class Meta:
        model = Article
        fields = (
            'id',
            'headline',
            'publications',
        )

    def create(self, validated_data):
        service = SerializerCreateService(self, validated_data, m2m_fields=['publications'])
        current_instance = super().create(validated_data)

        service.create_m2m_instances(
            parent_instance=current_instance
        )
        return current_instance

One to one case

Для создание объектов с отношением o2o используется метод create_child_instances

Пример кода для случая o2o:

class RestaurantDirectorSerializer(serializers.ModelSerializer):
    class Meta:
        model = RestaurantDirector
        fields = (
            'id',
            'name',
        )

class RestaurantSerializer(serializers.ModelSerializer):
    director = RestaurantDirectorSerializer(
        required=True
    )

    class Meta:
        model = Restaurant
        fields = (
            'id',
            'serves_hot_dogs',
            'serves_pizza',
            'director',
        )

    def create(self, validated_data):
        service = SerializerCreateService(
            self,
            validated_data,
            child_fields=['director']
        )
        restaurant = super().create(validated_data)

        service.create_child_instances(restaurant)
        return restaurant

Foreign key case

Для создание объектов с отношением fk используется метод create_fk_instances

Пример кода для случая fk:

class ReporterSerializer(serializers.ModelSerializer):
    class Meta:
        model = Reporter
        fields = (
            'id',
            'first_name',
            'last_name',
        )

class NewsSerializer(serializers.ModelSerializer):
    reporter = ReporterSerializer(
        required=True
    )

    class Meta:
        model = News
        fields = (
            'id',
            'headline',
            'reporter'
        )

    def create(self, validated_data):
        service = SerializerCreateService(self, validated_data, fk_fields=['reporter'])
        service.create_fk_instances()
        return super().create(validated_data)

Feature

Полезные фичи

  • При инициализации сервиса, он автоматически удаляет из validated_data поля указанные в m2m_fields и child_fields Поэтому вам ненужно вручную очищать validated_data от вложенных объектов для создания родительского объекта. Просто вызовите создание родительского объекта после инициализации сервиса. (Полезно для o2o и m2m)

  • После вызова одного из методов создания вложенных объектов, в validated_data будут помещены экземпляры созданных объектов

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nescs-0.3.5.tar.gz (4.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

nescs-0.3.5-py3-none-any.whl (4.1 kB view details)

Uploaded Python 3

File details

Details for the file nescs-0.3.5.tar.gz.

File metadata

  • Download URL: nescs-0.3.5.tar.gz
  • Upload date:
  • Size: 4.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for nescs-0.3.5.tar.gz
Algorithm Hash digest
SHA256 bf1637eb50925b0d2bb69686cfc081cd29181281e7f1cff30c74deae7db27ccb
MD5 93280e479b16073ce9d0319d0c384bb1
BLAKE2b-256 2261b770243f5cabe50b6d12ea069973c53f2f321fa5d32e0140cf41692f8a1d

See more details on using hashes here.

File details

Details for the file nescs-0.3.5-py3-none-any.whl.

File metadata

  • Download URL: nescs-0.3.5-py3-none-any.whl
  • Upload date:
  • Size: 4.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for nescs-0.3.5-py3-none-any.whl
Algorithm Hash digest
SHA256 f9182bb3aba3290c6ed66c26fe4455ab0a3554472d72f3f1de8c37f87f82d948
MD5 97ae294e3070f6823431be49a15c348f
BLAKE2b-256 953b4c84f27e730b872a8757682ddcd49512e98cb71745fb0aececa4b7538ac3

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page