DRF Dynamic Fields

0.4.0 · active · verified Fri Apr 17

drf-dynamic-fields is a lightweight Django REST Framework utility that enables serializers to dynamically expose a subset of their fields based on query parameters in the API request. This can be useful for reducing payload size and tailoring responses for different client needs. The current version is 0.4.0, and releases are infrequent, reflecting its stable and focused scope.

Common errors

Warnings

Install

Imports

Quickstart

To use `drf-dynamic-fields`, inherit `DynamicFieldsMixin` in your Django REST Framework serializer. The mixin will automatically check for `fields` or `omit` query parameters in the request context and adjust the serializer's output accordingly. Ensure your view passes the request context to the serializer.

from rest_framework import serializers, viewsets
from drf_dynamic_fields import DynamicFieldsMixin
from django.db import models

# --- Example Django Model ---
class Product(models.Model):
    name = models.CharField(max_length=100)
    description = models.TextField()
    price = models.DecimalField(max_digits=10, decimal_places=2)
    is_available = models.BooleanField(default=True)

    def __str__(self):
        return self.name

# --- DRF Serializer with DynamicFieldsMixin ---
class ProductSerializer(DynamicFieldsMixin, serializers.ModelSerializer):
    class Meta:
        model = Product
        fields = ['id', 'name', 'description', 'price', 'is_available']

# --- DRF ViewSet ---
class ProductViewSet(viewsets.ModelViewSet):
    queryset = Product.objects.all()
    serializer_class = ProductSerializer

# To use this, configure Django URL patterns to include ProductViewSet.
# Example API request with dynamic fields:
# GET /api/products/?fields=id,name,price
# GET /api/products/?omit=description,is_available

view raw JSON →