Skip to main content

A way to remove unwanted fields from a serializer

Project description

DRF Lighten

PyPI version Maintainability python3.x python2.x

Purpose

Even if we call the same end point at multiple places, the information we want from the response varies greatly. DRF Lighten makes it possible to specify and get only the data you want.

Installation

pip install drf_lighten

Usage

# serializers.py
from app import models
from drf_lighten.serializers import DynamicFieldsMixin
from rest_framework import serializers


class UserSerializer(DynamicFieldsMixin,
                     serializers.HyperlinkedModelSerializer)
    class Meta:
        model = models.User
        fields = "__all__"



class ProfileSerializer(DynamicFieldsMixin,
                        serializers.HyperlinkedModelSerializer)
    user = UserSerializer(read_only=True)

    class Meta:
        model = models.Profile
        fields = "__all__"


# views.py
from app import models
from drf_lighten.views import DynamicFieldsMixin
from rest_framework import viewsets


# …

class ProfileViewSet(DynamicFieldsMixin, viewsets.ModelViewSet):
    queryset = models.Profile.objects.all()
    serializer_class = serializers.ProfileSerializer

Examples

https://localhost:8000/profiles/

[
  {
    "url": "https://localhost:8000/profiles/22/",
    "picture": "https://localhost:8000/media/22.jpg",
    "phone_number": "+251-911-11-11-11",
    "user": {
      "url": "https://localhost:8000/users/22/",
      "user_name": "jupi2142",
      "email": "test@gmail.com",
      "first_name": "Henock",
      "last_name": "Tesfaye"
    },
    "posts": [
      "https://localhost:8000/posts/77/",
      "https://localhost:8000/posts/78/",
      "https://localhost:8000/posts/79/",
      "https://localhost:8000/posts/79/",
      "https://localhost:8000/posts/99/"
    ]
  }
]

https://localhost:8000/profiles/?fields=["url", "picture", {"user": ["url", "username"]}]

[
  {
    "url": "https://localhost:8000/profiles/22/",
    "picture": "https://localhost:8000/media/22.jpg",
    "user": {
      "url": "https://localhost:8000/users/22/",
      "user_name": "jupi2142"
    }
  }
]

Configuration

If you want to use different query params than the ones provided, you can go to your django project's settings and do that

DRF_LIGHTEN_INCLUDE = 'fields'
DRF_LIGHTEN_EXCLUDE = 'exclude'

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

drf_lighten-0.8.1.tar.gz (8.4 kB view details)

Uploaded Source

Built Distribution

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

drf_lighten-0.8.1-py2.py3-none-any.whl (6.1 kB view details)

Uploaded Python 2Python 3

File details

Details for the file drf_lighten-0.8.1.tar.gz.

File metadata

  • Download URL: drf_lighten-0.8.1.tar.gz
  • Upload date:
  • Size: 8.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.26.0

File hashes

Hashes for drf_lighten-0.8.1.tar.gz
Algorithm Hash digest
SHA256 905df73f9e82cfea020cdee4cb1a55dc970ac49fac44ba9b4c22b9f16f6d498b
MD5 ec4e28133093fbd2180e4f230e85f8f1
BLAKE2b-256 fe3730513f2ceb285506260802bb9b15ea83e7467b48fe592e000b5f10ab5a72

See more details on using hashes here.

File details

Details for the file drf_lighten-0.8.1-py2.py3-none-any.whl.

File metadata

  • Download URL: drf_lighten-0.8.1-py2.py3-none-any.whl
  • Upload date:
  • Size: 6.1 kB
  • Tags: Python 2, Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: python-requests/2.26.0

File hashes

Hashes for drf_lighten-0.8.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 e62b2ce456434177e9af1ef3fd36b28eb1a1d35f2f4afbba37b3bf2b614d1ebf
MD5 c1091bf569d19161f39cffaf7d27fd03
BLAKE2b-256 aebb4240c22dab792c43781308c53046b5f462035ee140023076c9d1b09f2b61

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