Библиотека создания моделей вложенных сериализаторов
Project description
NESTED SERIALIZER CREATE SERVICE
Installation
Установка через PyPi:
pip install nescs
Description
Данная библиотека позволяет автоматически создавать объекты во вложенных сериализаторах. Работу по созданию вложенных объектов берет на себя сервис - SerializerCreateService. Он поддерживает создание объектов в случаях
Many to many
One to one
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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
bf1637eb50925b0d2bb69686cfc081cd29181281e7f1cff30c74deae7db27ccb
|
|
| MD5 |
93280e479b16073ce9d0319d0c384bb1
|
|
| BLAKE2b-256 |
2261b770243f5cabe50b6d12ea069973c53f2f321fa5d32e0140cf41692f8a1d
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9182bb3aba3290c6ed66c26fe4455ab0a3554472d72f3f1de8c37f87f82d948
|
|
| MD5 |
97ae294e3070f6823431be49a15c348f
|
|
| BLAKE2b-256 |
953b4c84f27e730b872a8757682ddcd49512e98cb71745fb0aececa4b7538ac3
|