Pular para o conteúdo principal

Django-Rest-Framework e a API de models do Django

O django-rest-framework possui serializers que se integram muito bem com os models do django, mas é importante ressaltar que o objetivo do rest-framework não é funcionar (e suportar) do mesmo modo a api de models do django e, portanto, algumas funcionalidades "padrão" podem se perder. Um exemplo disso, relatado em Issue #7159 no GitHub é o método clean() dentro do model.

from django.core.exceptions import ValidationError
from django.db import models
from rest_framework import serializers
from django import forms
from django.test import TestCase

class Sample(models.Model):
title = models.CharField(max_length=50)

def clean(self):
raise ValidationError('')

class SampleSerializer(serializers.ModelSerializer):
class Meta:
model = Sample
fields = '__all__'

class SampleForm(forms.ModelForm):
class Meta:
model = Sample
fields = "__all__"

class SampleTests(TestCase):
def test_form(self):
form = SampleForm({"title": "test"})
self.assertFalse(form.is_valid())

def test_serializer(self):
serializer = SampleSerializer(data={"title": "test"})
self.assertFalse(serializer.is_valid())