A way to remove unwanted fields from a serializer
Project description
DRF Lighten
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
Release history Release notifications | RSS feed
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.3.3.tar.gz
(3.7 kB
view hashes)
Built Distribution
Close
Hashes for drf_lighten-0.3.3-py2.py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | 04d110dca88c664bc76601aed15e01ce29c6f17b0daf3df2077e84ac68b4a1e0 |
|
MD5 | b5d515ff50d2299b4a8e1143d4f42af4 |
|
BLAKE2b-256 | fced9546b68fc38bdc124ba35a6b0cdc014d65d46cff8399e29e5950c8e4781e |