РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
35 of 818 menu

Метод full_clean

Метод full_clean применяется к экземпляру модели и выполняет полную проверку данных: валидацию каждого поля через clean_fields, проверку уникальности через validate_unique и проверку ограничений через validate_constraints. Метод автоматически вызывается при сохранении модели через форму, но для программной валидации его нужно вызывать явно.

Метод принимает два необязательных аргумента: exclude - список полей, которые нужно исключить из валидации, и validate_unique - флаг для отключения проверки уникальности. По умолчанию оба аргумента имеют значения None и True соответственно.

Синтаксис

model_instance.full_clean(exclude=None, validate_unique=True)

Пример . Модель

Создадим модель статьи для демонстрации работы метода:

from django.db import models from django.core.exceptions import ValidationError class Article(models.Model): title = models.CharField(max_length=100) content = models.TextField() views = models.IntegerField(default=0) is_published = models.BooleanField(default=False) created_at = models.DateTimeField(auto_now_add=True) def clean(self): if self.views < 0: raise ValidationError( "Views cannot be negative" ) def __str__(self): return self.title

Пример

Валидируем модель перед сохранением:

from myapp.models import Article article = Article( title="First article", content="Some content", views=10 ) try: article.full_clean() article.save() print("Article saved successfully") except ValidationError as e: print(f"Validation error: {e}")

Результат выполнения кода:

"Article saved successfully"

Пример

Обработаем ситуацию с невалидными данными:

from myapp.models import Article from django.core.exceptions import ValidationError article = Article( title="Invalid article", content="Content", views=-5 ) try: article.full_clean() except ValidationError as e: print(f"Error: {e.message_dict}")

Результат выполнения кода:

"Error: {'__all__': ['Views cannot be negative']}"

Пример

Исключим поле из валидации с помощью параметра exclude:

from myapp.models import Article article = Article( title="Test article", content="Test content", views=100 ) article.full_clean(exclude=['views']) article.save() print("Article saved with skipped views validation")

Результат выполнения кода:

"Article saved with skipped views validation"

Пример

Отключим проверку уникальности с помощью параметра validate_unique:

from myapp.models import Article article = Article( title="Duplicate title", content="Content", views=50 ) article.full_clean(validate_unique=False) article.save() print("Article saved without unique validation")

Результат выполнения кода:

"Article saved without unique validation"

Смотрите также

  • метод clean,
    который используется для кастомной валидации модели
  • метод clean_fields,
    который валидирует отдельные поля модели
  • метод validate_unique,
    который проверяет уникальность записей
  • метод validate_constraints,
    который проверяет ограничения модели
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить