Как проверить, что дата окончания не раньше даты начала django - PullRequest
0 голосов
/ 06 апреля 2020

Мне нужно убедиться, что дата окончания события не раньше даты начала

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)

1 Ответ

1 голос
/ 06 апреля 2020

Я бы посоветовал посмотреть на сигналы в 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)

При сохранении с неправильными датами должна быть ошибка поднял.

...