Skip to main content

Serializer which will automatically prefetch and bypass lazy calls

Project description

Downloads Latest Version Supported Python versions

QuerysetSerializer

This package adds a serializer to ensure all models in the serializers get properly prefetched or selected

installation

pip install queryset-serializer

Usage

Simply install the package into your project and import the serializer

from queryset_serializer import QuerySetSerializer

class MyModelSerializer(QuerySetSerializer):
    ... 
    class Meta:
        ...

In order to prefetch/select everything make sure all serializers used are of QuerySetSerializer

Note : You cannot mix restframework.serializer.ModelSerializer with this class (However all instance of ModelSerializer should be replaceable)

Config

configurations can be changed as following:

from queryset_serializer.serializers import Config
Config.meta_class.{setting} = {new_value}

these are the relevant settings :

  • prefetch_to_attr_prefix , What string will be used as prefix.
  • prefetch_listing , How the prefetch is done (Options: PrefetchToAttrSerializerList, PrefetchSerializerList)

prefetch_listing

there are 2 options for the prefetch_listing. (Located in queryset_serializer.serializers.model)

  • PrefetchToAttrSerializerList will prefetch/select relations and use the to_attr attribute of the Prefetch class
  • PrefetchSerializerList will only prefetch/select relations

This package by default makes use PrefetchToAttrSerializerList, The benefit of this is that the .all() calls on the relations are nog longer lazy.

This can significantly speed up performance especially on a queryset with a large amount of results or if there are a lot of child (queryset)serializer

This can also be turned off, and instead do a regular prefetch:

from queryset_serializer.serializers import Config
from queryset_serializer.serializers.model import PrefetchSerializerList
Config.meta_class.prefetch_listing = PrefetchSerializerList

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

queryset-serializer-1.0.4.tar.gz (7.8 kB view hashes)

Uploaded Source

Built Distribution

queryset_serializer-1.0.4-py3-none-any.whl (9.9 kB view hashes)

Uploaded Python 3

Supported by

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