0
0
DjangoHow-ToBeginner · 4 min read

How to Create Serializer in DRF in Django: Simple Guide

In Django REST Framework (DRF), create a serializer by subclassing serializers.Serializer or serializers.ModelSerializer and defining fields. This converts Django models or data into JSON and validates input data easily.
📐

Syntax

To create a serializer in DRF, define a class that inherits from serializers.Serializer or serializers.ModelSerializer. Inside, declare fields that match your data or model attributes.

serializers.Serializer is for custom data structures, while serializers.ModelSerializer automatically creates fields based on a Django model.

python
from rest_framework import serializers

class MySerializer(serializers.Serializer):
    field_name = serializers.CharField(max_length=100)

# Or for model-based serializer
class MyModelSerializer(serializers.ModelSerializer):
    class Meta:
        model = MyModel
        fields = ['field1', 'field2']
💻

Example

This example shows how to create a serializer for a Django model Book with fields title and author. The serializer converts model instances to JSON and validates input data.

python
from django.db import models
from rest_framework import serializers

# Django model
class Book(models.Model):
    title = models.CharField(max_length=100)
    author = models.CharField(max_length=100)

# Serializer for the Book model
class BookSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['title', 'author']

# Usage example
book = Book(title='1984', author='George Orwell')
serializer = BookSerializer(book)
print(serializer.data)
Output
{'title': '1984', 'author': 'George Orwell'}
⚠️

Common Pitfalls

  • Forgetting to import serializers from rest_framework.
  • Not specifying fields in Meta when using ModelSerializer.
  • Using serializers.Serializer without defining all required fields.
  • Trying to serialize model instances without passing them to the serializer.

Always ensure your serializer fields match your data or model fields.

python
from rest_framework import serializers

# Wrong: Missing fields in ModelSerializer Meta
class WrongSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        # fields missing here

# Right: Specify fields
class RightSerializer(serializers.ModelSerializer):
    class Meta:
        model = Book
        fields = ['title', 'author']
📊

Quick Reference

Remember these key points when creating serializers in DRF:

  • Use ModelSerializer for Django models to save time.
  • Define fields in Meta to specify which model fields to include.
  • Use Serializer for custom data structures.
  • Validate data automatically with serializer fields.

Key Takeaways

Create serializers by subclassing serializers.Serializer or serializers.ModelSerializer.
ModelSerializer automatically maps model fields; always specify fields in Meta.
Serializers convert complex data to JSON and validate input data.
Common errors include missing fields or forgetting to import serializers.
Use ModelSerializer for models and Serializer for custom data structures.