Как сделать валидацию в админ панели django?

В 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.