Django Rest Framework, как Modelserializer проверяет вводимые пользователем данные? - PullRequest
0 голосов
/ 16 апреля 2020

У меня есть метод в ArticleSerializer, который проверяет длину свойства title . Свойство title связано с моделью (Article).

Как функция validate_title выполняет себя при вызове класса ArticleSerializer?

Как функция validate_title получает значение из свойства title ?

#necessary module imports
from .models import Article


class ArticleSerializer(serializers.ModelSerializer):

    class Meta:
        model = Article
        exclude = ("id",)

    def validate_title(self, value):
        """ check that title is at least 30 chars long
        """
        if len(value) < 30:
            raise serializers.ValidationError("type less")
        return value

Я изучаю Django остальную работу в Udemy

Ссылка на Github: https://github.com/pymike00/The-Complete-Guide-To-DRF-and-VueJS/blob/master/03-DRF-LEVEL-ONE/newsapi/news/api/serializers.py

1 Ответ

2 голосов
/ 16 апреля 2020

Просто переопределите метод проверки для serializers.ModelSerializer.

#necessary module imports
from .models import Article


class ArticleSerializer(serializers.ModelSerializer):

    class Meta:
        model = Article
        exclude = ("id",)

    def validate(self, attrs):
        """ check that title is at least 30 chars long"""
        title = attrs.get('title', None)

        if len(title) < 30:
            raise serializers.ValidationError("type less")
        return attrs

. Убедитесь, что вы вернули attrs.

...