Я бы посоветовал посмотреть на сигналы в Django. См. URL: https://docs.djangoproject.com/en/3.0/ref/signals/#pre -сохранить
Вот пример черновика (не проверенный), который вы можете попробовать:
from django.db.models.signals import pre_save
class Event(models.Model):
name = models.CharField(max_length=100)
start_date = models.DateField()
end_date = models.DateField()
session=models.ForeignKey(Session,on_delete=models.CASCADE)
slug = models.SlugField(unique=True, editable=False, max_length=100)
def check_date(sender, instance, *args, **kwargs):
if instance.start_date > instance.end_date:
raise ValueError('Start date must be less than end date')
pre_save.connect(check_date, sender=Event)
При сохранении с неправильными датами должна быть ошибка поднял.