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
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 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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
905df73f9e82cfea020cdee4cb1a55dc970ac49fac44ba9b4c22b9f16f6d498b
|
|
| MD5 |
ec4e28133093fbd2180e4f230e85f8f1
|
|
| BLAKE2b-256 |
fe3730513f2ceb285506260802bb9b15ea83e7467b48fe592e000b5f10ab5a72
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
e62b2ce456434177e9af1ef3fd36b28eb1a1d35f2f4afbba37b3bf2b614d1ebf
|
|
| MD5 |
c1091bf569d19161f39cffaf7d27fd03
|
|
| BLAKE2b-256 |
aebb4240c22dab792c43781308c53046b5f462035ee140023076c9d1b09f2b61
|