Django — Serializers
Basic Serializer
from rest_framework import serializers
from .models import Post
class PostSerializer(serializers.ModelSerializer):
class Meta:
model = Post
fields = ['id', 'title', 'content', 'author', 'created_at']
Field Types
| Field | Description |
|---|---|
| CharField | String |
| IntegerField | Integer |
| BooleanField | Boolean |
| DateTimeField | DateTime |
| EmailField | |
| SlugField | Slug |
| FileField | File |
| ImageField | Image |
| ForeignKey | Related object |
Validation
class PostSerializer(serializers.ModelSerializer):
def validate_title(self, value):
if len(value) < 5:
raise serializers.ValidationError("Title too short")
return value
def validate(self, data):
if data['title'] == data['content']:
raise serializers.ValidationError("Title and content differ")
return data
Nested Serializers
class AuthorSerializer(serializers.ModelSerializer):
class Meta:
model = Author
fields = ['id', 'name']
class PostSerializer(serializers.ModelSerializer):
author = AuthorSerializer(read_only=True)
class Meta:
model = Post
fields = ['id', 'title', 'content', 'author']
Custom Fields
class PostSerializer(serializers.ModelSerializer):
word_count = serializers.SerializerMethodField()
def get_word_count(self, obj):
return len(obj.content.split())
Mini Practice
- Create a basic serializer
- Add field validation
- Use nested serializers
- Create custom fields
Up Next
Continue with ViewSets — combining views and serializers.
Related Topics
Frequently Asked Questions about Serializers
What is Serializers in Django?
Serializers is a fundamental concept in Django. This lesson explains it step by step with clear examples, making it easy for beginners to understand.
How do I learn Serializers?
Start by reading the explanation above, then try the code examples. Practice by modifying the examples and experimenting with different values. Hands-on practice is the best way to learn Serializers.
Why is Serializers important in Django?
Serializers is essential for Django development. Understanding this concept will help you write better code and solve real-world problems more effectively.