Validation

Validation

from rest_framework import serializers
from .models import Blog

class BlogSerializer(serializers.ModelSerializer):
    class Meta:
        model = Blog
        fields = '__all__'

    def validate_title(self, value):
        existing_blogs = Blog.objects.filter(title=value)
        if self.instance:
            existing_blogs = existing_blogs.exclude(pk=self.instance.pk)
        if existing_blogs.exists():
            raise serializers.ValidationError("A blog with this title already exists.")
        return value

or

from rest_framework import serializers
from .models import Blog

class BlogSerializer(serializers.Serializer):
    title = serializers.CharField(max_length=100)
    content = serializers.CharField()
    created_at = serializers.DateTimeField(read_only=True)
    updated_at = serializers.DateTimeField(read_only=True)

    def create(self, validated_data):
        return Blog.objects.create(**validated_data)

    def update(self, instance, validated_data):
        instance.title = validated_data.get('title', instance.title)
        instance.content = validated_data.get('content', instance.content)
        instance.save()
        return instance

    def validate_title(self, value):
        existing_blogs = Blog.objects.filter(title=value)
        if self.instance:
            existing_blogs = existing_blogs.exclude(pk=self.instance.pk)
        if existing_blogs.exists():
            raise serializers.ValidationError("A blog with this title already exists.")
        return value

Last updated