В Django, для реализации валидации в админ панели можно использовать несколько подходов. Давайте рассмотрим два наиболее популярных метода.
1) Переопределение метода clean()
модели:
Вы можете переопределить метод clean()
для вашей модели и добавить кастомную валидацию в этот метод. Метод clean()
вызывается в процессе валидации данных модели.
Вот пример кода для валидации поля "title" модели "YourModel":
from django.core.exceptions import ValidationError from django.db import models class YourModel(models.Model): title = models.CharField(max_length=100) def clean(self): if "badword" in self.title: raise ValidationError("Обнаружено недопустимое слово в поле заголовка.") # Если все данные корректны, то вызываем оригинальный метод clean() для базовой модели super().clean()
2) Использование функции clean()
в ModelAdmin
:
Вы можете определить метод clean()
в вашем классе ModelAdmin
, который будет выполнять валидацию перед сохранением модели.
from django.contrib import admin from .models import YourModel class YourModelAdmin(admin.ModelAdmin): def clean(self, model): # Выполнить необходимую валидацию if "badword" in model.title: raise ValidationError("Обнаружено недопустимое слово в поле заголовка.") # Если все данные корректны, то сохраняем модель model.save() admin.site.register(YourModel, YourModelAdmin)
Вы можете использовать и более сложные правила валидации, в зависимости от ваших требований, в обоих примерах. Они могут включать в себя проверку количества символов, формат даты и другие специфические требования.
Оба указанных способа обеспечивают вам возможность добавить любую логику валидации, которая будет вызываться при попытке сохранить модель в админ панели Django.